@xmachines/play-solid 1.0.0-beta.30 → 1.0.0-beta.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -27
- package/dist/PlayRenderer.js +48 -40
- package/dist/PlayRenderer.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/node_modules/@json-render/core/dist/index.js +131 -78
- package/dist/node_modules/@json-render/core/dist/index.js.map +1 -1
- package/dist/node_modules/@json-render/solid/dist/index.js +251 -208
- package/dist/node_modules/@json-render/solid/dist/index.js.map +1 -1
- package/dist/node_modules/zod/v4/core/util.js +1 -1
- package/dist/node_modules/zod/v4/core/util.js.map +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_$createComponent","createContext2","_$createComponent2","useContext2","createContext3","useContext3","createContext4","createSignal3","_$createComponent4","useContext4","_$delegateEvents","createContext5","_$createComponent5","useContext5","createContext6","useContext6","createMemo3","evaluateVisibility2","_$createComponent6","getByPath2"],"sources":["../../../../../../../node_modules/@json-render/solid/dist/index.mjs"],"sourcesContent":["import {\n elementTreeSchema,\n schema\n} from \"./chunk-XTSB6FIM.mjs\";\n\n// src/contexts/state.tsx\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nimport { createContext, useContext, createSignal, createEffect, createMemo, onCleanup } from \"solid-js\";\nimport { getByPath, createStateStore } from \"@json-render/core\";\nimport { flattenToPointers } from \"@json-render/core/store-utils\";\nvar StateContext = createContext(null);\nfunction computeInitialFlat(isControlled, initialState) {\n if (isControlled) return null;\n if (Object.keys(initialState).length === 0) return {};\n return flattenToPointers(initialState);\n}\nfunction StateProvider(props) {\n let internalStore;\n if (!props.store) {\n internalStore = createStateStore(props.initialState ?? {});\n }\n const store = () => props.store ?? internalStore;\n const initialMode = props.store ? \"controlled\" : \"uncontrolled\";\n let modeWarned = false;\n if (typeof globalThis !== \"undefined\" && globalThis.process?.env?.NODE_ENV !== \"production\") {\n createEffect(() => {\n const currentMode = props.store ? \"controlled\" : \"uncontrolled\";\n if (currentMode !== initialMode && !modeWarned) {\n modeWarned = true;\n console.warn(`StateProvider: switching from ${initialMode} to ${currentMode} mode is not supported.`);\n }\n });\n }\n let prevInitialState = props.initialState;\n let prevFlat = computeInitialFlat(!!props.store, props.initialState ?? {});\n createEffect(() => {\n if (props.store) return;\n const initialState = props.initialState ?? {};\n if (initialState === prevInitialState) return;\n prevInitialState = initialState;\n const nextFlat = initialState && Object.keys(initialState).length > 0 ? flattenToPointers(initialState) : {};\n const prevFlatObj = prevFlat ?? {};\n const allKeys = /* @__PURE__ */ new Set([...Object.keys(prevFlatObj), ...Object.keys(nextFlat)]);\n const updates = {};\n for (const key of allKeys) {\n if (prevFlatObj[key] !== nextFlat[key]) {\n updates[key] = key in nextFlat ? nextFlat[key] : void 0;\n }\n }\n prevFlat = nextFlat;\n if (Object.keys(updates).length > 0) {\n store().update(updates);\n }\n });\n const [state, setState] = createSignal(store().getSnapshot(), {\n equals: false\n });\n const changeListeners = /* @__PURE__ */ new Set();\n const subscribeChanges = (listener) => {\n changeListeners.add(listener);\n return () => {\n changeListeners.delete(listener);\n };\n };\n const notifyChanges = (changes) => {\n for (const listener of changeListeners) {\n listener(changes);\n }\n };\n createEffect(() => {\n const s = store();\n setState(s.getSnapshot());\n const unsubscribe = s.subscribe(() => {\n setState(s.getSnapshot());\n });\n onCleanup(unsubscribe);\n });\n const set = (path, value) => {\n const s = store();\n const prev = s.getSnapshot();\n const prevValue = getByPath(prev, path);\n s.set(path, value);\n if (prevValue !== value) {\n const changes = [{\n path,\n value\n }];\n notifyChanges(changes);\n if (!props.store && s.getSnapshot() !== prev) {\n props.onStateChange?.(changes);\n }\n }\n };\n const update = (updates) => {\n const s = store();\n const prev = s.getSnapshot();\n s.update(updates);\n const changes = [];\n for (const [path, value] of Object.entries(updates)) {\n if (getByPath(prev, path) !== value) {\n changes.push({\n path,\n value\n });\n }\n }\n if (changes.length > 0) {\n notifyChanges(changes);\n if (!props.store && s.getSnapshot() !== prev) {\n props.onStateChange?.(changes);\n }\n }\n };\n const get = (path) => store().get(path);\n const getSnapshot = () => store().getSnapshot();\n const ctx = {\n get state() {\n return state();\n },\n get,\n set,\n update,\n getSnapshot,\n subscribeChanges\n };\n return _$createComponent(StateContext.Provider, {\n value: ctx,\n get children() {\n return props.children;\n }\n });\n}\nfunction useStateStore() {\n const ctx = useContext(StateContext);\n if (!ctx) {\n throw new Error(\"useStateStore must be used within a StateProvider\");\n }\n return ctx;\n}\nfunction useStateValue(path) {\n const store = useStateStore();\n return createMemo(() => getByPath(store.state, path));\n}\nfunction useStateBinding(path) {\n const store = useStateStore();\n const value = createMemo(() => getByPath(store.state, path));\n const setValue = (newValue) => store.set(path, newValue);\n return [value, setValue];\n}\n\n// src/contexts/visibility.tsx\nimport { createComponent as _$createComponent2 } from \"solid-js/web\";\nimport { createContext as createContext2, useContext as useContext2 } from \"solid-js\";\nimport { evaluateVisibility } from \"@json-render/core\";\nvar VisibilityContext = createContext2(null);\nfunction VisibilityProvider(props) {\n const stateStore = useStateStore();\n const visibilityCtx = {\n get stateModel() {\n return stateStore.state;\n }\n };\n const value = {\n isVisible: (condition) => evaluateVisibility(condition, visibilityCtx),\n ctx: visibilityCtx\n };\n return _$createComponent2(VisibilityContext.Provider, {\n value,\n get children() {\n return props.children;\n }\n });\n}\nfunction useVisibility() {\n const ctx = useContext2(VisibilityContext);\n if (!ctx) {\n throw new Error(\"useVisibility must be used within a VisibilityProvider\");\n }\n return ctx;\n}\nfunction useIsVisible(condition) {\n const {\n isVisible\n } = useVisibility();\n return isVisible(condition);\n}\n\n// src/contexts/actions.tsx\nimport { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { setStyleProperty as _$setStyleProperty } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nimport { memo as _$memo } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { addEventListener as _$addEventListener } from \"solid-js/web\";\nimport { createComponent as _$createComponent4 } from \"solid-js/web\";\nimport { createContext as createContext4, useContext as useContext4, createSignal as createSignal3 } from \"solid-js\";\nimport { resolveAction, executeAction } from \"@json-render/core\";\n\n// src/contexts/validation.tsx\nimport { createComponent as _$createComponent3 } from \"solid-js/web\";\nimport { createContext as createContext3, useContext as useContext3, createSignal as createSignal2, createEffect as createEffect2, createMemo as createMemo2 } from \"solid-js\";\nimport { runValidation } from \"@json-render/core\";\nvar ValidationContext = createContext3(null);\nfunction dynamicArgsEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const va = a[key];\n const vb = b[key];\n if (va === vb) continue;\n if (typeof va === \"object\" && va !== null && typeof vb === \"object\" && vb !== null) {\n const sa = va.$state;\n const sb = vb.$state;\n if (typeof sa === \"string\" && sa === sb) continue;\n }\n return false;\n }\n return true;\n}\nfunction validationConfigEqual(a, b) {\n if (a === b) return true;\n if (a.validateOn !== b.validateOn) return false;\n const ac = a.checks ?? [];\n const bc = b.checks ?? [];\n if (ac.length !== bc.length) return false;\n for (let i = 0; i < ac.length; i++) {\n const ca = ac[i];\n const cb = bc[i];\n if (ca.type !== cb.type) return false;\n if (ca.message !== cb.message) return false;\n if (!dynamicArgsEqual(ca.args, cb.args)) return false;\n }\n return true;\n}\nfunction ValidationProvider(props) {\n const {\n getSnapshot\n } = useStateStore();\n const customFunctions = () => props.customFunctions ?? {};\n const [fieldStates, setFieldStates] = createSignal2({});\n let fieldStatesRef = {};\n const [fieldConfigs, setFieldConfigs] = createSignal2({});\n const registerField = (path, config) => {\n setFieldConfigs((prev) => {\n const existing = prev[path];\n if (existing && validationConfigEqual(existing, config)) {\n return prev;\n }\n return {\n ...prev,\n [path]: config\n };\n });\n };\n const validate = (path, config) => {\n const currentState = getSnapshot();\n const segments = path.split(\"/\").filter(Boolean);\n let value2 = currentState;\n for (const seg of segments) {\n if (value2 != null && typeof value2 === \"object\") {\n value2 = value2[seg];\n } else {\n value2 = void 0;\n break;\n }\n }\n const result = runValidation(config, {\n value: value2,\n stateModel: currentState,\n customFunctions: customFunctions()\n });\n const newFieldState = {\n touched: fieldStatesRef[path]?.touched ?? true,\n validated: true,\n result\n };\n fieldStatesRef = {\n ...fieldStatesRef,\n [path]: newFieldState\n };\n setFieldStates(fieldStatesRef);\n return result;\n };\n const touch = (path) => {\n fieldStatesRef = {\n ...fieldStatesRef,\n [path]: {\n ...fieldStatesRef[path],\n touched: true,\n validated: fieldStatesRef[path]?.validated ?? false,\n result: fieldStatesRef[path]?.result ?? null\n }\n };\n setFieldStates(fieldStatesRef);\n };\n const clear = (path) => {\n const {\n [path]: _,\n ...rest\n } = fieldStatesRef;\n fieldStatesRef = rest;\n setFieldStates(rest);\n };\n const validateAll = () => {\n let allValid = true;\n for (const [path, config] of Object.entries(fieldConfigs())) {\n const result = validate(path, config);\n if (!result.valid) {\n allValid = false;\n }\n }\n return allValid;\n };\n const value = {\n get customFunctions() {\n return customFunctions();\n },\n get fieldStates() {\n fieldStates();\n return fieldStatesRef;\n },\n validate,\n touch,\n clear,\n validateAll,\n registerField\n };\n return _$createComponent3(ValidationContext.Provider, {\n value,\n get children() {\n return props.children;\n }\n });\n}\nfunction useValidation() {\n const ctx = useContext3(ValidationContext);\n if (!ctx) {\n throw new Error(\"useValidation must be used within a ValidationProvider\");\n }\n return ctx;\n}\nfunction useOptionalValidation() {\n return useContext3(ValidationContext);\n}\nfunction useFieldValidation(path, config) {\n const validation = useValidation();\n createEffect2(() => {\n if (path && config) {\n validation.registerField(path, config);\n }\n });\n const state = createMemo2(() => {\n const current = validation.fieldStates[path];\n return current ?? {\n touched: false,\n validated: false,\n result: null\n };\n });\n const validate = () => validation.validate(path, config ?? {\n checks: []\n });\n const touch = () => validation.touch(path);\n const clear = () => validation.clear(path);\n const errors = createMemo2(() => state().result?.errors ?? []);\n const isValid = createMemo2(() => state().result?.valid ?? true);\n return {\n state,\n validate,\n touch,\n clear,\n errors,\n isValid\n };\n}\n\n// src/contexts/actions.tsx\nvar _tmpl$ = /* @__PURE__ */ _$template(`<div style=\"position:fixed;inset:0;background-color:rgba(0, 0, 0, 0.5);display:flex;align-items:center;justify-content:center;z-index:50\"><div style=\"background-color:white;border-radius:8px;padding:24px;max-width:400px;width:100%;box-shadow:0 20px 25px -5px rgba(0, 0, 0, 0.1)\"><h3 style=\"margin:0 0 8px 0;font-size:18px;font-weight:600\"></h3><p style=\"margin:0 0 24px 0;color:#6b7280\"></p><div style=display:flex;gap:12px;justify-content:flex-end><button style=\"padding:8px 16px;border-radius:6px;border:1px solid #d1d5db;background-color:white;cursor:pointer\"></button><button style=\"padding:8px 16px;border-radius:6px;border:none;color:white;cursor:pointer\">`);\nvar idCounter = 0;\nfunction generateUniqueId() {\n idCounter += 1;\n return `${Date.now()}-${idCounter}`;\n}\nfunction deepResolveValue(value, get) {\n if (value === null || value === void 0) return value;\n if (value === \"$id\") {\n return generateUniqueId();\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n const obj = value;\n const keys = Object.keys(obj);\n if (keys.length === 1 && typeof obj.$state === \"string\") {\n return get(obj.$state);\n }\n if (keys.length === 1 && \"$id\" in obj) {\n return generateUniqueId();\n }\n }\n if (Array.isArray(value)) {\n return value.map((item) => deepResolveValue(item, get));\n }\n if (typeof value === \"object\") {\n const resolved = {};\n for (const [key, val] of Object.entries(value)) {\n resolved[key] = deepResolveValue(val, get);\n }\n return resolved;\n }\n return value;\n}\nvar ActionContext = createContext4(null);\nfunction ActionProvider(props) {\n const {\n get,\n set,\n getSnapshot\n } = useStateStore();\n const validation = useOptionalValidation();\n const [handlers, setHandlers] = createSignal3(props.handlers ?? {});\n const [loadingActions, setLoadingActions] = createSignal3(/* @__PURE__ */ new Set());\n const [pendingConfirmation, setPendingConfirmation] = createSignal3(null);\n const registerHandler = (name, handler) => {\n setHandlers((prev) => ({\n ...prev,\n [name]: handler\n }));\n };\n const execute = async (binding) => {\n const resolved = resolveAction(binding, getSnapshot());\n if (resolved.action === \"setState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const value = resolved.params.value;\n if (statePath) {\n set(statePath, value);\n }\n return;\n }\n if (resolved.action === \"pushState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const rawValue = resolved.params.value;\n if (statePath) {\n const resolvedValue = deepResolveValue(rawValue, get);\n const arr = get(statePath) ?? [];\n set(statePath, [...arr, resolvedValue]);\n const clearStatePath = resolved.params.clearStatePath;\n if (clearStatePath) {\n set(clearStatePath, \"\");\n }\n }\n return;\n }\n if (resolved.action === \"removeState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const index = resolved.params.index;\n if (statePath !== void 0 && index !== void 0) {\n const arr = get(statePath) ?? [];\n set(statePath, arr.filter((_, i) => i !== index));\n }\n return;\n }\n if (resolved.action === \"push\" && resolved.params) {\n const screen = resolved.params.screen;\n if (screen) {\n const currentScreen = get(\"/currentScreen\");\n const navStack = get(\"/navStack\") ?? [];\n if (currentScreen) {\n set(\"/navStack\", [...navStack, currentScreen]);\n } else {\n set(\"/navStack\", [...navStack, \"\"]);\n }\n set(\"/currentScreen\", screen);\n }\n return;\n }\n if (resolved.action === \"pop\") {\n const navStack = get(\"/navStack\") ?? [];\n if (navStack.length > 0) {\n const previousScreen = navStack[navStack.length - 1];\n set(\"/navStack\", navStack.slice(0, -1));\n if (previousScreen) {\n set(\"/currentScreen\", previousScreen);\n } else {\n set(\"/currentScreen\", void 0);\n }\n }\n return;\n }\n if (resolved.action === \"validateForm\") {\n const validateAll = validation?.validateAll;\n if (!validateAll) {\n console.warn(\"validateForm action was dispatched but no ValidationProvider is connected. Ensure ValidationProvider is rendered inside the provider tree.\");\n return;\n }\n const valid = validateAll();\n const errors = {};\n for (const [path, fs] of Object.entries(validation.fieldStates)) {\n if (fs.result && !fs.result.valid) {\n errors[path] = fs.result.errors;\n }\n }\n const statePath = resolved.params?.statePath || \"/formValidation\";\n set(statePath, {\n valid,\n errors\n });\n return;\n }\n const handler = handlers()[resolved.action];\n if (!handler) {\n console.warn(`No handler registered for action: ${resolved.action}`);\n return;\n }\n if (resolved.confirm) {\n return new Promise((resolve, reject) => {\n setPendingConfirmation({\n action: resolved,\n handler,\n resolve: () => {\n setPendingConfirmation(null);\n resolve();\n },\n reject: () => {\n setPendingConfirmation(null);\n reject(new Error(\"Action cancelled\"));\n }\n });\n }).then(async () => {\n setLoadingActions((prev) => new Set(prev).add(resolved.action));\n try {\n await executeAction({\n action: resolved,\n handler,\n setState: set,\n navigate: props.navigate,\n executeAction: async (name) => {\n const subBinding = {\n action: name\n };\n await execute(subBinding);\n }\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.action);\n return next;\n });\n }\n });\n }\n setLoadingActions((prev) => new Set(prev).add(resolved.action));\n try {\n await executeAction({\n action: resolved,\n handler,\n setState: set,\n navigate: props.navigate,\n executeAction: async (name) => {\n const subBinding = {\n action: name\n };\n await execute(subBinding);\n }\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.action);\n return next;\n });\n }\n };\n const confirm = () => {\n pendingConfirmation()?.resolve();\n };\n const cancel = () => {\n pendingConfirmation()?.reject();\n };\n const ctx = {\n get handlers() {\n return handlers();\n },\n get loadingActions() {\n return loadingActions();\n },\n get pendingConfirmation() {\n return pendingConfirmation();\n },\n execute,\n confirm,\n cancel,\n registerHandler\n };\n return _$createComponent4(ActionContext.Provider, {\n value: ctx,\n get children() {\n return props.children;\n }\n });\n}\nfunction useActions() {\n const ctx = useContext4(ActionContext);\n if (!ctx) {\n throw new Error(\"useActions must be used within an ActionProvider\");\n }\n return ctx;\n}\nfunction useAction(binding) {\n const actions = useActions();\n return {\n execute: () => actions.execute(binding),\n get isLoading() {\n return actions.loadingActions.has(binding.action);\n }\n };\n}\nfunction ConfirmDialog(props) {\n const isDanger = () => props.confirm.variant === \"danger\";\n return (() => {\n var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;\n _$addEventListener(_el$, \"click\", props.onCancel, true);\n _el$2.$$click = (e) => e.stopPropagation();\n _$insert(_el$3, () => props.confirm.title);\n _$insert(_el$4, () => props.confirm.message);\n _$addEventListener(_el$6, \"click\", props.onCancel, true);\n _$insert(_el$6, () => props.confirm.cancelLabel ?? \"Cancel\");\n _$addEventListener(_el$7, \"click\", props.onConfirm, true);\n _$insert(_el$7, () => props.confirm.confirmLabel ?? \"Confirm\");\n _$effect((_$p) => _$setStyleProperty(_el$7, \"background-color\", isDanger() ? \"#dc2626\" : \"#3b82f6\"));\n return _el$;\n })();\n}\n_$delegateEvents([\"click\"]);\n\n// src/contexts/repeat-scope.tsx\nimport { createComponent as _$createComponent5 } from \"solid-js/web\";\nimport { createContext as createContext5, useContext as useContext5 } from \"solid-js\";\nvar RepeatScopeContext = createContext5(null);\nfunction RepeatScopeProvider(props) {\n return _$createComponent5(RepeatScopeContext.Provider, {\n get value() {\n return {\n item: props.item,\n index: props.index,\n basePath: props.basePath\n };\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction useRepeatScope() {\n return useContext5(RepeatScopeContext);\n}\n\n// src/index.ts\nimport { createStateStore as createStateStore2 } from \"@json-render/core\";\n\n// src/renderer.tsx\nimport { memo as _$memo2 } from \"solid-js/web\";\nimport { createComponent as _$createComponent6 } from \"solid-js/web\";\nimport { createContext as createContext6, useContext as useContext6, createMemo as createMemo3, createEffect as createEffect3, onCleanup as onCleanup2, ErrorBoundary, Show, For } from \"solid-js\";\nimport { resolveElementProps, resolveBindings, resolveActionParam, evaluateVisibility as evaluateVisibility2, getByPath as getByPath2 } from \"@json-render/core\";\nvar EMPTY_FUNCTIONS = {};\nvar FunctionsContext = createContext6(EMPTY_FUNCTIONS);\nfunction useFunctions() {\n return useContext6(FunctionsContext) ?? EMPTY_FUNCTIONS;\n}\nfunction ElementRenderer(props) {\n const repeatScope = useRepeatScope();\n const {\n ctx\n } = useVisibility();\n const {\n execute\n } = useActions();\n const stateStore = useStateStore();\n const getSnapshot = () => stateStore.getSnapshot();\n const functions = useFunctions();\n const fullCtx = createMemo3(() => {\n const repeatItem = repeatScope?.item;\n const repeatIndex = repeatScope?.index;\n const repeatBasePath = repeatScope?.basePath;\n return {\n get stateModel() {\n return ctx.stateModel;\n },\n ...repeatItem !== void 0 ? {\n repeatItem\n } : {},\n ...repeatIndex !== void 0 ? {\n repeatIndex\n } : {},\n ...repeatBasePath !== void 0 ? {\n repeatBasePath\n } : {},\n functions\n };\n });\n const isVisible = createMemo3(() => props.element.visible === void 0 ? true : evaluateVisibility2(props.element.visible, fullCtx()));\n const emit = async (eventName) => {\n const onBindings = props.element.on;\n const binding = onBindings?.[eventName];\n if (!binding) return;\n const actionBindings = Array.isArray(binding) ? binding : [binding];\n for (const b of actionBindings) {\n if (!b.params) {\n await execute(b);\n continue;\n }\n const liveCtx = {\n ...fullCtx(),\n stateModel: getSnapshot()\n };\n const resolved = {};\n for (const [key, val] of Object.entries(b.params)) {\n resolved[key] = resolveActionParam(val, liveCtx);\n }\n await execute({\n ...b,\n params: resolved\n });\n }\n };\n const on = (eventName) => {\n const onBindings = props.element.on;\n const binding = onBindings?.[eventName];\n if (!binding) {\n return {\n emit: () => {\n },\n shouldPreventDefault: false,\n bound: false\n };\n }\n const actionBindings = Array.isArray(binding) ? binding : [binding];\n const shouldPreventDefault = actionBindings.some((b) => b.preventDefault);\n return {\n emit: () => emit(eventName),\n shouldPreventDefault,\n bound: true\n };\n };\n createEffect3(() => {\n const watchConfig = props.element.watch;\n if (!watchConfig) return;\n const paths = Object.keys(watchConfig);\n if (paths.length === 0) return;\n const unsubscribe = stateStore.subscribeChanges((changes) => {\n const changedPaths = new Set(changes.map((change) => change.path));\n void (async () => {\n for (const path of paths) {\n if (!changedPaths.has(path)) continue;\n const binding = watchConfig[path];\n if (!binding) continue;\n const bindings = Array.isArray(binding) ? binding : [binding];\n for (const b of bindings) {\n if (!b.params) {\n await execute(b);\n continue;\n }\n const liveCtx = {\n ...fullCtx(),\n stateModel: getSnapshot()\n };\n const resolved = {};\n for (const [key, val] of Object.entries(b.params)) {\n resolved[key] = resolveActionParam(val, liveCtx);\n }\n await execute({\n ...b,\n params: resolved\n });\n }\n }\n })().catch(console.error);\n });\n onCleanup2(() => {\n unsubscribe();\n });\n });\n const elementBindings = createMemo3(() => {\n const rawProps = props.element.props;\n return resolveBindings(rawProps, fullCtx());\n });\n const resolvedElement = createMemo3(() => {\n const rawProps = props.element.props;\n const resolvedProps = resolveElementProps(rawProps, fullCtx());\n return resolvedProps !== props.element.props ? {\n ...props.element,\n props: resolvedProps\n } : props.element;\n });\n return _$createComponent6(Show, {\n get when() {\n return isVisible();\n },\n get children() {\n return _$createComponent6(ErrorBoundary, {\n fallback: (err) => {\n console.error(`[json-render] Rendering error in <${props.element.type}>:`, err);\n return null;\n },\n get children() {\n return _$createComponent6(ElementRendererContent, {\n get resolvedElement() {\n return resolvedElement();\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n },\n emit,\n on,\n get bindings() {\n return elementBindings();\n }\n });\n }\n });\n }\n });\n}\nfunction ElementRendererContent(props) {\n const Comp = () => props.registry[props.resolvedElement.type] ?? props.fallback;\n return _$createComponent6(Show, {\n get when() {\n return Comp();\n },\n get fallback() {\n console.warn(`No renderer for component type: ${props.resolvedElement.type}`);\n return null;\n },\n children: (ComponentFn) => {\n const Component = ComponentFn();\n const children = () => props.resolvedElement.repeat ? _$createComponent6(RepeatChildren, {\n get element() {\n return props.resolvedElement;\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n }) : _$createComponent6(For, {\n get each() {\n return props.resolvedElement.children ?? [];\n },\n children: (childKey) => {\n const childElement = () => props.spec.elements[childKey];\n return _$createComponent6(Show, {\n get when() {\n return childElement();\n },\n get fallback() {\n if (!props.loading) {\n console.warn(`[json-render] Missing element \"${childKey}\" referenced as child of \"${props.resolvedElement.type}\". This element will not render.`);\n }\n return null;\n },\n children: (el) => _$createComponent6(ElementRenderer, {\n get element() {\n return el();\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n })\n });\n }\n });\n return _$createComponent6(Component, {\n get element() {\n return props.resolvedElement;\n },\n get emit() {\n return props.emit;\n },\n get on() {\n return props.on;\n },\n get bindings() {\n return props.bindings;\n },\n get loading() {\n return props.loading;\n },\n get children() {\n return children();\n }\n });\n }\n });\n}\nfunction RepeatChildren(props) {\n const stateStore = useStateStore();\n const repeat = () => props.element.repeat;\n const statePath = () => repeat().statePath;\n const items = () => getByPath2(stateStore.state, statePath()) ?? [];\n return _$createComponent6(For, {\n get each() {\n return items();\n },\n children: (itemValue, index) => {\n const key = () => {\n const r = repeat();\n return r.key && typeof itemValue === \"object\" && itemValue !== null ? String(itemValue[r.key] ?? index()) : String(index());\n };\n return _$createComponent6(RepeatScopeProvider, {\n item: itemValue,\n get index() {\n return index();\n },\n get basePath() {\n return `${statePath()}/${index()}`;\n },\n get children() {\n return _$createComponent6(For, {\n get each() {\n return props.element.children ?? [];\n },\n children: (childKey) => {\n const childElement = () => props.spec.elements[childKey];\n return _$createComponent6(Show, {\n get when() {\n return childElement();\n },\n get fallback() {\n if (!props.loading) {\n console.warn(`[json-render] Missing element \"${childKey}\" referenced as child of \"${props.element.type}\" (repeat). This element will not render.`);\n }\n return null;\n },\n children: (el) => _$createComponent6(ElementRenderer, {\n get element() {\n return el();\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n })\n });\n }\n });\n }\n });\n }\n });\n}\nfunction Renderer(props) {\n const rootElement = createMemo3(() => {\n const spec = props.spec;\n if (!spec || !spec.root) return void 0;\n return spec.elements[spec.root];\n });\n return _$createComponent6(Show, {\n get when() {\n return rootElement();\n },\n children: (el) => _$createComponent6(ElementRenderer, {\n get element() {\n return el();\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n })\n });\n}\nfunction JSONUIProvider(props) {\n return _$createComponent6(StateProvider, {\n get store() {\n return props.store;\n },\n get initialState() {\n return props.initialState;\n },\n get onStateChange() {\n return props.onStateChange;\n },\n get children() {\n return _$createComponent6(VisibilityProvider, {\n get children() {\n return _$createComponent6(ValidationProvider, {\n get customFunctions() {\n return props.validationFunctions;\n },\n get children() {\n return _$createComponent6(ActionProvider, {\n get handlers() {\n return props.handlers;\n },\n get navigate() {\n return props.navigate;\n },\n get children() {\n return _$createComponent6(FunctionsContext.Provider, {\n get value() {\n return props.functions ?? EMPTY_FUNCTIONS;\n },\n get children() {\n return [_$memo2(() => props.children), _$createComponent6(ConfirmationDialogManager, {})];\n }\n });\n }\n });\n }\n });\n }\n });\n }\n });\n}\nfunction ConfirmationDialogManager() {\n const {\n pendingConfirmation,\n confirm,\n cancel\n } = useActions();\n return _$createComponent6(Show, {\n get when() {\n return pendingConfirmation?.action.confirm;\n },\n children: (confirmConfig) => _$createComponent6(ConfirmDialog, {\n get confirm() {\n return confirmConfig();\n },\n onConfirm: confirm,\n onCancel: cancel\n })\n });\n}\nfunction defineRegistry(_catalog, options) {\n const registry = {};\n if (options.components) {\n for (const [name, componentFn] of Object.entries(options.components)) {\n registry[name] = (renderProps) => {\n return componentFn({\n get props() {\n return renderProps.element.props;\n },\n get children() {\n return renderProps.children;\n },\n emit: renderProps.emit,\n on: renderProps.on,\n get bindings() {\n return renderProps.bindings;\n },\n get loading() {\n return renderProps.loading;\n }\n });\n };\n }\n }\n const actionMap = options.actions ? Object.entries(options.actions) : [];\n const handlers = (getSetState, getState) => {\n const result = {};\n for (const [name, actionFn] of actionMap) {\n result[name] = async (params) => {\n const setState = getSetState();\n const state = getState();\n if (setState) {\n await actionFn(params, setState, state);\n }\n };\n }\n return result;\n };\n const executeAction2 = async (actionName, params, setState, state = {}) => {\n const entry = actionMap.find(([name]) => name === actionName);\n if (entry) {\n await entry[1](params, setState, state);\n } else {\n console.warn(`Unknown action: ${actionName}`);\n }\n };\n return {\n registry,\n handlers,\n executeAction: executeAction2\n };\n}\nfunction createRenderer(catalog, components) {\n const registry = components;\n return function CatalogRenderer(props) {\n const actionHandlers = () => props.onAction ? new Proxy({}, {\n get: (_target, prop) => {\n return (params) => props.onAction(prop, params);\n },\n has: () => true\n }) : void 0;\n return _$createComponent6(StateProvider, {\n get store() {\n return props.store;\n },\n get initialState() {\n return props.state;\n },\n get onStateChange() {\n return props.onStateChange;\n },\n get children() {\n return _$createComponent6(VisibilityProvider, {\n get children() {\n return _$createComponent6(ValidationProvider, {\n get children() {\n return _$createComponent6(ActionProvider, {\n get handlers() {\n return actionHandlers();\n },\n get children() {\n return _$createComponent6(FunctionsContext.Provider, {\n get value() {\n return props.functions ?? EMPTY_FUNCTIONS;\n },\n get children() {\n return [_$createComponent6(Renderer, {\n get spec() {\n return props.spec;\n },\n registry,\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n }), _$createComponent6(ConfirmationDialogManager, {})];\n }\n });\n }\n });\n }\n });\n }\n });\n }\n });\n };\n}\n\n// src/hooks.ts\nimport { createSignal as createSignal4, onCleanup as onCleanup3, createMemo as createMemo4 } from \"solid-js\";\nimport {\n setByPath,\n getByPath as getByPath3,\n removeByPath,\n createMixedStreamParser,\n applySpecPatch,\n nestedToFlat,\n SPEC_DATA_PART_TYPE\n} from \"@json-render/core\";\nfunction parseLine(line) {\n try {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"//\")) {\n return null;\n }\n const parsed = JSON.parse(trimmed);\n if (parsed.__meta === \"usage\") {\n return {\n type: \"usage\",\n usage: {\n promptTokens: parsed.promptTokens ?? 0,\n completionTokens: parsed.completionTokens ?? 0,\n totalTokens: parsed.totalTokens ?? 0\n }\n };\n }\n return { type: \"patch\", patch: parsed };\n } catch {\n return null;\n }\n}\nfunction setSpecValue(newSpec, path, value) {\n if (path === \"/root\") {\n newSpec.root = value;\n return;\n }\n if (path === \"/state\") {\n newSpec.state = value;\n return;\n }\n if (path.startsWith(\"/state/\")) {\n if (!newSpec.state) newSpec.state = {};\n const statePath = path.slice(\"/state\".length);\n setByPath(newSpec.state, statePath, value);\n return;\n }\n if (path.startsWith(\"/elements/\")) {\n const pathParts = path.slice(\"/elements/\".length).split(\"/\");\n const elementKey = pathParts[0];\n if (!elementKey) return;\n if (pathParts.length === 1) {\n newSpec.elements[elementKey] = value;\n } else {\n const element = newSpec.elements[elementKey];\n if (element) {\n const propPath = \"/\" + pathParts.slice(1).join(\"/\");\n const newElement = { ...element };\n setByPath(\n newElement,\n propPath,\n value\n );\n newSpec.elements[elementKey] = newElement;\n }\n }\n }\n}\nfunction removeSpecValue(newSpec, path) {\n if (path === \"/state\") {\n delete newSpec.state;\n return;\n }\n if (path.startsWith(\"/state/\") && newSpec.state) {\n const statePath = path.slice(\"/state\".length);\n removeByPath(newSpec.state, statePath);\n return;\n }\n if (path.startsWith(\"/elements/\")) {\n const pathParts = path.slice(\"/elements/\".length).split(\"/\");\n const elementKey = pathParts[0];\n if (!elementKey) return;\n if (pathParts.length === 1) {\n const { [elementKey]: _, ...rest } = newSpec.elements;\n newSpec.elements = rest;\n } else {\n const element = newSpec.elements[elementKey];\n if (element) {\n const propPath = \"/\" + pathParts.slice(1).join(\"/\");\n const newElement = { ...element };\n removeByPath(\n newElement,\n propPath\n );\n newSpec.elements[elementKey] = newElement;\n }\n }\n }\n}\nfunction getSpecValue(spec, path) {\n if (path === \"/root\") return spec.root;\n if (path === \"/state\") return spec.state;\n if (path.startsWith(\"/state/\") && spec.state) {\n const statePath = path.slice(\"/state\".length);\n return getByPath3(spec.state, statePath);\n }\n return getByPath3(spec, path);\n}\nfunction applyPatch(spec, patch) {\n const newSpec = {\n ...spec,\n elements: { ...spec.elements },\n ...spec.state ? { state: { ...spec.state } } : {}\n };\n switch (patch.op) {\n case \"add\":\n case \"replace\": {\n setSpecValue(newSpec, patch.path, patch.value);\n break;\n }\n case \"remove\": {\n removeSpecValue(newSpec, patch.path);\n break;\n }\n case \"move\": {\n if (!patch.from) break;\n const moveValue = getSpecValue(newSpec, patch.from);\n removeSpecValue(newSpec, patch.from);\n setSpecValue(newSpec, patch.path, moveValue);\n break;\n }\n case \"copy\": {\n if (!patch.from) break;\n const copyValue = getSpecValue(newSpec, patch.from);\n setSpecValue(newSpec, patch.path, copyValue);\n break;\n }\n case \"test\": {\n break;\n }\n }\n return newSpec;\n}\nfunction useUIStream(options) {\n const [spec, setSpec] = createSignal4(null);\n const [isStreaming, setIsStreaming] = createSignal4(false);\n const [error, setError] = createSignal4(null);\n const [usage, setUsage] = createSignal4(null);\n const [rawLines, setRawLines] = createSignal4([]);\n let abortController = null;\n const clear = () => {\n setSpec(null);\n setError(null);\n };\n const send = async (prompt, context) => {\n abortController?.abort();\n abortController = new AbortController();\n setIsStreaming(true);\n setError(null);\n setUsage(null);\n setRawLines([]);\n const previousSpec = context?.previousSpec;\n let currentSpec = previousSpec && previousSpec.root ? { ...previousSpec, elements: { ...previousSpec.elements } } : { root: \"\", elements: {} };\n setSpec(currentSpec);\n try {\n const response = await fetch(options.api, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n prompt,\n context,\n currentSpec\n }),\n signal: abortController.signal\n });\n if (!response.ok) {\n let errorMessage = `HTTP error: ${response.status}`;\n try {\n const errorData = await response.json();\n if (errorData.message) {\n errorMessage = errorData.message;\n } else if (errorData.error) {\n errorMessage = errorData.error;\n }\n } catch {\n }\n throw new Error(errorMessage);\n }\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n const result = parseLine(trimmed);\n if (!result) continue;\n if (result.type === \"usage\") {\n setUsage(result.usage);\n } else {\n setRawLines((prev) => [...prev, trimmed]);\n currentSpec = applyPatch(currentSpec, result.patch);\n setSpec({ ...currentSpec });\n }\n }\n }\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n const result = parseLine(trimmed);\n if (result) {\n if (result.type === \"usage\") {\n setUsage(result.usage);\n } else {\n setRawLines((prev) => [...prev, trimmed]);\n currentSpec = applyPatch(currentSpec, result.patch);\n setSpec({ ...currentSpec });\n }\n }\n }\n options.onComplete?.(currentSpec);\n } catch (err) {\n if (err.name === \"AbortError\") {\n return;\n }\n const resolvedError = err instanceof Error ? err : new Error(String(err));\n setError(resolvedError);\n options.onError?.(resolvedError);\n } finally {\n setIsStreaming(false);\n }\n };\n onCleanup3(() => {\n abortController?.abort();\n });\n return {\n get spec() {\n return spec();\n },\n get isStreaming() {\n return isStreaming();\n },\n get error() {\n return error();\n },\n get usage() {\n return usage();\n },\n get rawLines() {\n return rawLines();\n },\n send,\n clear\n };\n}\nfunction flatToTree(elements) {\n const elementMap = {};\n let root = \"\";\n for (const element of elements) {\n elementMap[element.key] = {\n type: element.type,\n props: element.props,\n children: [],\n visible: element.visible\n };\n }\n for (const element of elements) {\n if (element.parentKey) {\n const parent = elementMap[element.parentKey];\n if (parent) {\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(element.key);\n }\n } else {\n root = element.key;\n }\n }\n return { root, elements: elementMap };\n}\nfunction useBoundProp(propValue, bindingPath) {\n const { set } = useStateStore();\n const setValue = (value) => {\n if (bindingPath) set(bindingPath, value);\n };\n return [propValue, setValue];\n}\nfunction isSpecDataPart(data) {\n if (typeof data !== \"object\" || data === null) return false;\n const obj = data;\n switch (obj.type) {\n case \"patch\":\n return typeof obj.patch === \"object\" && obj.patch !== null;\n case \"flat\":\n case \"nested\":\n return typeof obj.spec === \"object\" && obj.spec !== null;\n default:\n return false;\n }\n}\nfunction buildSpecFromParts(parts) {\n const spec = { root: \"\", elements: {} };\n let hasSpec = false;\n for (const part of parts) {\n if (part.type === SPEC_DATA_PART_TYPE) {\n if (!isSpecDataPart(part.data)) continue;\n const payload = part.data;\n if (payload.type === \"patch\") {\n hasSpec = true;\n applySpecPatch(spec, payload.patch);\n } else if (payload.type === \"flat\") {\n hasSpec = true;\n Object.assign(spec, payload.spec);\n } else if (payload.type === \"nested\") {\n hasSpec = true;\n const flat = nestedToFlat(payload.spec);\n Object.assign(spec, flat);\n }\n }\n }\n return hasSpec ? spec : null;\n}\nfunction getTextFromParts(parts) {\n return parts.filter(\n (p) => p.type === \"text\" && typeof p.text === \"string\"\n ).map((p) => p.text.trim()).filter(Boolean).join(\"\\n\\n\");\n}\nfunction useJsonRenderMessage(getParts) {\n const result = createMemo4(() => {\n const parts = getParts();\n return {\n spec: buildSpecFromParts(parts),\n text: getTextFromParts(parts)\n };\n });\n return {\n get spec() {\n return result().spec;\n },\n get text() {\n return result().text;\n },\n get hasSpec() {\n const s = result().spec;\n return s !== null && Object.keys(s.elements || {}).length > 0;\n }\n };\n}\nvar chatMessageIdCounter = 0;\nfunction generateChatId() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n chatMessageIdCounter += 1;\n return `msg-${Date.now()}-${chatMessageIdCounter}`;\n}\nfunction useChatUI(options) {\n const [messages, setMessages] = createSignal4([]);\n const [isStreaming, setIsStreaming] = createSignal4(false);\n const [error, setError] = createSignal4(null);\n let abortController = null;\n const clear = () => {\n setMessages([]);\n setError(null);\n };\n const send = async (text) => {\n if (!text.trim()) return;\n abortController?.abort();\n abortController = new AbortController();\n const userMessage = {\n id: generateChatId(),\n role: \"user\",\n text: text.trim(),\n spec: null\n };\n const assistantId = generateChatId();\n const assistantMessage = {\n id: assistantId,\n role: \"assistant\",\n text: \"\",\n spec: null\n };\n setMessages((prev) => [...prev, userMessage, assistantMessage]);\n setIsStreaming(true);\n setError(null);\n const historyForApi = [\n ...messages().filter((m) => m.id !== userMessage.id && m.id !== assistantId).map((m) => ({\n role: m.role,\n content: m.text\n })),\n { role: \"user\", content: text.trim() }\n ];\n let accumulatedText = \"\";\n let currentSpec = { root: \"\", elements: {} };\n let hasSpec = false;\n try {\n const response = await fetch(options.api, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ messages: historyForApi }),\n signal: abortController.signal\n });\n if (!response.ok) {\n let errorMessage = `HTTP error: ${response.status}`;\n try {\n const errorData = await response.json();\n if (errorData.message) {\n errorMessage = errorData.message;\n } else if (errorData.error) {\n errorMessage = errorData.error;\n }\n } catch {\n }\n throw new Error(errorMessage);\n }\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n const decoder = new TextDecoder();\n const parser = createMixedStreamParser({\n onPatch(patch) {\n hasSpec = true;\n applySpecPatch(currentSpec, patch);\n setMessages(\n (prev) => prev.map(\n (m) => m.id === assistantId ? {\n ...m,\n spec: {\n root: currentSpec.root,\n elements: { ...currentSpec.elements },\n ...currentSpec.state ? { state: { ...currentSpec.state } } : {}\n }\n } : m\n )\n );\n },\n onText(line) {\n accumulatedText += (accumulatedText ? \"\\n\" : \"\") + line;\n setMessages(\n (prev) => prev.map(\n (m) => m.id === assistantId ? { ...m, text: accumulatedText } : m\n )\n );\n }\n });\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n parser.push(decoder.decode(value, { stream: true }));\n }\n parser.flush();\n const finalMessage = {\n id: assistantId,\n role: \"assistant\",\n text: accumulatedText,\n spec: hasSpec ? {\n root: currentSpec.root,\n elements: { ...currentSpec.elements },\n ...currentSpec.state ? { state: { ...currentSpec.state } } : {}\n } : null\n };\n options.onComplete?.(finalMessage);\n } catch (err) {\n if (err.name === \"AbortError\") {\n return;\n }\n const resolvedError = err instanceof Error ? err : new Error(String(err));\n setError(resolvedError);\n setMessages(\n (prev) => prev.filter((m) => m.id !== assistantId || m.text.length > 0)\n );\n options.onError?.(resolvedError);\n } finally {\n setIsStreaming(false);\n }\n };\n onCleanup3(() => {\n abortController?.abort();\n });\n return {\n get messages() {\n return messages();\n },\n get isStreaming() {\n return isStreaming();\n },\n get error() {\n return error();\n },\n send,\n clear\n };\n}\nexport {\n ActionProvider,\n ConfirmDialog,\n JSONUIProvider,\n Renderer,\n RepeatScopeProvider,\n StateProvider,\n ValidationProvider,\n VisibilityProvider,\n buildSpecFromParts,\n createRenderer,\n createStateStore2 as createStateStore,\n defineRegistry,\n elementTreeSchema,\n flatToTree,\n getTextFromParts,\n schema,\n useAction,\n useActions,\n useBoundProp,\n useChatUI,\n useFieldValidation,\n useIsVisible,\n useJsonRenderMessage,\n useOptionalValidation,\n useRepeatScope,\n useStateBinding,\n useStateStore,\n useStateValue,\n useUIStream,\n useValidation,\n useVisibility\n};\n//# sourceMappingURL=index.mjs.map"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_$createComponent","createContext2","_$createComponent2","useContext2","createContext3","useContext3","createContext4","createSignal3","_$createComponent4","useContext4","_$delegateEvents","createContext5","_$createComponent5","useContext5","createContext6","useContext6","createSignal4","createMemo3","evaluateVisibility2","_$createComponent6","_$memo2","_$setAttribute","getByPath2"],"sources":["../../../../../../../node_modules/@json-render/solid/dist/index.mjs"],"sourcesContent":["import {\n elementTreeSchema,\n schema\n} from \"./chunk-XTSB6FIM.mjs\";\n\n// src/contexts/state.tsx\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nimport { createContext, useContext, createSignal, createEffect, createMemo, onCleanup } from \"solid-js\";\nimport { getByPath, createStateStore } from \"@json-render/core\";\nimport { flattenToPointers } from \"@json-render/core/store-utils\";\nvar StateContext = createContext(null);\nfunction computeInitialFlat(isControlled, initialState) {\n if (isControlled) return null;\n if (Object.keys(initialState).length === 0) return {};\n return flattenToPointers(initialState);\n}\nfunction StateProvider(props) {\n let internalStore;\n if (!props.store) {\n internalStore = createStateStore(props.initialState ?? {});\n }\n const store = () => props.store ?? internalStore;\n const initialMode = props.store ? \"controlled\" : \"uncontrolled\";\n let modeWarned = false;\n if (typeof globalThis !== \"undefined\" && globalThis.process?.env?.NODE_ENV !== \"production\") {\n createEffect(() => {\n const currentMode = props.store ? \"controlled\" : \"uncontrolled\";\n if (currentMode !== initialMode && !modeWarned) {\n modeWarned = true;\n console.warn(`StateProvider: switching from ${initialMode} to ${currentMode} mode is not supported.`);\n }\n });\n }\n let prevInitialState = props.initialState;\n let prevFlat = computeInitialFlat(!!props.store, props.initialState ?? {});\n createEffect(() => {\n if (props.store) return;\n const initialState = props.initialState ?? {};\n if (initialState === prevInitialState) return;\n prevInitialState = initialState;\n const nextFlat = initialState && Object.keys(initialState).length > 0 ? flattenToPointers(initialState) : {};\n const prevFlatObj = prevFlat ?? {};\n const allKeys = /* @__PURE__ */ new Set([...Object.keys(prevFlatObj), ...Object.keys(nextFlat)]);\n const updates = {};\n for (const key of allKeys) {\n if (prevFlatObj[key] !== nextFlat[key]) {\n updates[key] = key in nextFlat ? nextFlat[key] : void 0;\n }\n }\n prevFlat = nextFlat;\n if (Object.keys(updates).length > 0) {\n store().update(updates);\n }\n });\n const [state, setState] = createSignal(store().getSnapshot(), {\n equals: false\n });\n const changeListeners = /* @__PURE__ */ new Set();\n const subscribeChanges = (listener) => {\n changeListeners.add(listener);\n return () => {\n changeListeners.delete(listener);\n };\n };\n const notifyChanges = (changes) => {\n for (const listener of changeListeners) {\n listener(changes);\n }\n };\n createEffect(() => {\n const s = store();\n setState(s.getSnapshot());\n const unsubscribe = s.subscribe(() => {\n setState(s.getSnapshot());\n });\n onCleanup(unsubscribe);\n });\n const set = (path, value) => {\n const s = store();\n const prev = s.getSnapshot();\n const prevValue = getByPath(prev, path);\n s.set(path, value);\n if (prevValue !== value) {\n const changes = [{\n path,\n value\n }];\n notifyChanges(changes);\n if (!props.store && s.getSnapshot() !== prev) {\n props.onStateChange?.(changes);\n }\n }\n };\n const update = (updates) => {\n const s = store();\n const prev = s.getSnapshot();\n s.update(updates);\n const changes = [];\n for (const [path, value] of Object.entries(updates)) {\n if (getByPath(prev, path) !== value) {\n changes.push({\n path,\n value\n });\n }\n }\n if (changes.length > 0) {\n notifyChanges(changes);\n if (!props.store && s.getSnapshot() !== prev) {\n props.onStateChange?.(changes);\n }\n }\n };\n const get = (path) => store().get(path);\n const getSnapshot = () => store().getSnapshot();\n const ctx = {\n get state() {\n return state();\n },\n get,\n set,\n update,\n getSnapshot,\n subscribeChanges\n };\n return _$createComponent(StateContext.Provider, {\n value: ctx,\n get children() {\n return props.children;\n }\n });\n}\nfunction useStateStore() {\n const ctx = useContext(StateContext);\n if (!ctx) {\n throw new Error(\"useStateStore must be used within a StateProvider\");\n }\n return ctx;\n}\nfunction useStateValue(path) {\n const store = useStateStore();\n return createMemo(() => getByPath(store.state, path));\n}\nfunction useStateBinding(path) {\n const store = useStateStore();\n const value = createMemo(() => getByPath(store.state, path));\n const setValue = (newValue) => store.set(path, newValue);\n return [value, setValue];\n}\n\n// src/contexts/visibility.tsx\nimport { createComponent as _$createComponent2 } from \"solid-js/web\";\nimport { createContext as createContext2, useContext as useContext2 } from \"solid-js\";\nimport { evaluateVisibility } from \"@json-render/core\";\nvar VisibilityContext = createContext2(null);\nfunction VisibilityProvider(props) {\n const stateStore = useStateStore();\n const visibilityCtx = {\n get stateModel() {\n return stateStore.state;\n }\n };\n const value = {\n isVisible: (condition) => evaluateVisibility(condition, visibilityCtx),\n ctx: visibilityCtx\n };\n return _$createComponent2(VisibilityContext.Provider, {\n value,\n get children() {\n return props.children;\n }\n });\n}\nfunction useVisibility() {\n const ctx = useContext2(VisibilityContext);\n if (!ctx) {\n throw new Error(\"useVisibility must be used within a VisibilityProvider\");\n }\n return ctx;\n}\nfunction useIsVisible(condition) {\n const {\n isVisible\n } = useVisibility();\n return isVisible(condition);\n}\n\n// src/contexts/actions.tsx\nimport { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { setStyleProperty as _$setStyleProperty } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nimport { memo as _$memo } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { addEventListener as _$addEventListener } from \"solid-js/web\";\nimport { createComponent as _$createComponent4 } from \"solid-js/web\";\nimport { createContext as createContext4, useContext as useContext4, createSignal as createSignal3 } from \"solid-js\";\nimport { resolveAction, executeAction, nextActionDispatchId, notifyActionDispatch, notifyActionSettle } from \"@json-render/core\";\n\n// src/contexts/validation.tsx\nimport { createComponent as _$createComponent3 } from \"solid-js/web\";\nimport { createContext as createContext3, useContext as useContext3, createSignal as createSignal2, createEffect as createEffect2, createMemo as createMemo2 } from \"solid-js\";\nimport { runValidation } from \"@json-render/core\";\nvar ValidationContext = createContext3(null);\nfunction dynamicArgsEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const va = a[key];\n const vb = b[key];\n if (va === vb) continue;\n if (typeof va === \"object\" && va !== null && typeof vb === \"object\" && vb !== null) {\n const sa = va.$state;\n const sb = vb.$state;\n if (typeof sa === \"string\" && sa === sb) continue;\n }\n return false;\n }\n return true;\n}\nfunction validationConfigEqual(a, b) {\n if (a === b) return true;\n if (a.validateOn !== b.validateOn) return false;\n const ac = a.checks ?? [];\n const bc = b.checks ?? [];\n if (ac.length !== bc.length) return false;\n for (let i = 0; i < ac.length; i++) {\n const ca = ac[i];\n const cb = bc[i];\n if (ca.type !== cb.type) return false;\n if (ca.message !== cb.message) return false;\n if (!dynamicArgsEqual(ca.args, cb.args)) return false;\n }\n return true;\n}\nfunction ValidationProvider(props) {\n const {\n getSnapshot\n } = useStateStore();\n const customFunctions = () => props.customFunctions ?? {};\n const [fieldStates, setFieldStates] = createSignal2({});\n let fieldStatesRef = {};\n const [fieldConfigs, setFieldConfigs] = createSignal2({});\n const registerField = (path, config) => {\n setFieldConfigs((prev) => {\n const existing = prev[path];\n if (existing && validationConfigEqual(existing, config)) {\n return prev;\n }\n return {\n ...prev,\n [path]: config\n };\n });\n };\n const validate = (path, config) => {\n const currentState = getSnapshot();\n const segments = path.split(\"/\").filter(Boolean);\n let value2 = currentState;\n for (const seg of segments) {\n if (value2 != null && typeof value2 === \"object\") {\n value2 = value2[seg];\n } else {\n value2 = void 0;\n break;\n }\n }\n const result = runValidation(config, {\n value: value2,\n stateModel: currentState,\n customFunctions: customFunctions()\n });\n const newFieldState = {\n touched: fieldStatesRef[path]?.touched ?? true,\n validated: true,\n result\n };\n fieldStatesRef = {\n ...fieldStatesRef,\n [path]: newFieldState\n };\n setFieldStates(fieldStatesRef);\n return result;\n };\n const touch = (path) => {\n fieldStatesRef = {\n ...fieldStatesRef,\n [path]: {\n ...fieldStatesRef[path],\n touched: true,\n validated: fieldStatesRef[path]?.validated ?? false,\n result: fieldStatesRef[path]?.result ?? null\n }\n };\n setFieldStates(fieldStatesRef);\n };\n const clear = (path) => {\n const {\n [path]: _,\n ...rest\n } = fieldStatesRef;\n fieldStatesRef = rest;\n setFieldStates(rest);\n };\n const validateAll = () => {\n let allValid = true;\n for (const [path, config] of Object.entries(fieldConfigs())) {\n const result = validate(path, config);\n if (!result.valid) {\n allValid = false;\n }\n }\n return allValid;\n };\n const value = {\n get customFunctions() {\n return customFunctions();\n },\n get fieldStates() {\n fieldStates();\n return fieldStatesRef;\n },\n validate,\n touch,\n clear,\n validateAll,\n registerField\n };\n return _$createComponent3(ValidationContext.Provider, {\n value,\n get children() {\n return props.children;\n }\n });\n}\nfunction useValidation() {\n const ctx = useContext3(ValidationContext);\n if (!ctx) {\n throw new Error(\"useValidation must be used within a ValidationProvider\");\n }\n return ctx;\n}\nfunction useOptionalValidation() {\n return useContext3(ValidationContext);\n}\nfunction useFieldValidation(path, config) {\n const validation = useValidation();\n createEffect2(() => {\n if (path && config) {\n validation.registerField(path, config);\n }\n });\n const state = createMemo2(() => {\n const current = validation.fieldStates[path];\n return current ?? {\n touched: false,\n validated: false,\n result: null\n };\n });\n const validate = () => validation.validate(path, config ?? {\n checks: []\n });\n const touch = () => validation.touch(path);\n const clear = () => validation.clear(path);\n const errors = createMemo2(() => state().result?.errors ?? []);\n const isValid = createMemo2(() => state().result?.valid ?? true);\n return {\n state,\n validate,\n touch,\n clear,\n errors,\n isValid\n };\n}\n\n// src/contexts/actions.tsx\nvar _tmpl$ = /* @__PURE__ */ _$template(`<div style=\"position:fixed;inset:0;background-color:rgba(0, 0, 0, 0.5);display:flex;align-items:center;justify-content:center;z-index:50\"><div style=\"background-color:white;border-radius:8px;padding:24px;max-width:400px;width:100%;box-shadow:0 20px 25px -5px rgba(0, 0, 0, 0.1)\"><h3 style=\"margin:0 0 8px 0;font-size:18px;font-weight:600\"></h3><p style=\"margin:0 0 24px 0;color:#6b7280\"></p><div style=display:flex;gap:12px;justify-content:flex-end><button style=\"padding:8px 16px;border-radius:6px;border:1px solid #d1d5db;background-color:white;cursor:pointer\"></button><button style=\"padding:8px 16px;border-radius:6px;border:none;color:white;cursor:pointer\">`);\nvar idCounter = 0;\nfunction generateUniqueId() {\n idCounter += 1;\n return `${Date.now()}-${idCounter}`;\n}\nfunction deepResolveValue(value, get) {\n if (value === null || value === void 0) return value;\n if (value === \"$id\") {\n return generateUniqueId();\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n const obj = value;\n const keys = Object.keys(obj);\n if (keys.length === 1 && typeof obj.$state === \"string\") {\n return get(obj.$state);\n }\n if (keys.length === 1 && \"$id\" in obj) {\n return generateUniqueId();\n }\n }\n if (Array.isArray(value)) {\n return value.map((item) => deepResolveValue(item, get));\n }\n if (typeof value === \"object\") {\n const resolved = {};\n for (const [key, val] of Object.entries(value)) {\n resolved[key] = deepResolveValue(val, get);\n }\n return resolved;\n }\n return value;\n}\nvar ActionContext = createContext4(null);\nfunction ActionProvider(props) {\n const {\n get,\n set,\n getSnapshot\n } = useStateStore();\n const validation = useOptionalValidation();\n const [handlers, setHandlers] = createSignal3(props.handlers ?? {});\n const [loadingActions, setLoadingActions] = createSignal3(/* @__PURE__ */ new Set());\n const [pendingConfirmation, setPendingConfirmation] = createSignal3(null);\n const registerHandler = (name, handler) => {\n setHandlers((prev) => ({\n ...prev,\n [name]: handler\n }));\n };\n const execute = async (binding) => {\n const resolved = resolveAction(binding, getSnapshot());\n const dispatchId = nextActionDispatchId();\n const dispatchedAt = Date.now();\n notifyActionDispatch({\n id: dispatchId,\n name: resolved.action,\n params: resolved.params,\n at: dispatchedAt\n });\n let __ok = true;\n let __error = void 0;\n try {\n if (resolved.action === \"setState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const value = resolved.params.value;\n if (statePath) {\n set(statePath, value);\n }\n return;\n }\n if (resolved.action === \"pushState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const rawValue = resolved.params.value;\n if (statePath) {\n const resolvedValue = deepResolveValue(rawValue, get);\n const arr = get(statePath) ?? [];\n set(statePath, [...arr, resolvedValue]);\n const clearStatePath = resolved.params.clearStatePath;\n if (clearStatePath) {\n set(clearStatePath, \"\");\n }\n }\n return;\n }\n if (resolved.action === \"removeState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const index = resolved.params.index;\n if (statePath !== void 0 && index !== void 0) {\n const arr = get(statePath) ?? [];\n set(statePath, arr.filter((_, i) => i !== index));\n }\n return;\n }\n if (resolved.action === \"push\" && resolved.params) {\n const screen = resolved.params.screen;\n if (screen) {\n const currentScreen = get(\"/currentScreen\");\n const navStack = get(\"/navStack\") ?? [];\n if (currentScreen) {\n set(\"/navStack\", [...navStack, currentScreen]);\n } else {\n set(\"/navStack\", [...navStack, \"\"]);\n }\n set(\"/currentScreen\", screen);\n }\n return;\n }\n if (resolved.action === \"pop\") {\n const navStack = get(\"/navStack\") ?? [];\n if (navStack.length > 0) {\n const previousScreen = navStack[navStack.length - 1];\n set(\"/navStack\", navStack.slice(0, -1));\n if (previousScreen) {\n set(\"/currentScreen\", previousScreen);\n } else {\n set(\"/currentScreen\", void 0);\n }\n }\n return;\n }\n if (resolved.action === \"validateForm\") {\n const validateAll = validation?.validateAll;\n if (!validateAll) {\n console.warn(\"validateForm action was dispatched but no ValidationProvider is connected. Ensure ValidationProvider is rendered inside the provider tree.\");\n return;\n }\n const valid = validateAll();\n const errors = {};\n for (const [path, fs] of Object.entries(validation.fieldStates)) {\n if (fs.result && !fs.result.valid) {\n errors[path] = fs.result.errors;\n }\n }\n const statePath = resolved.params?.statePath || \"/formValidation\";\n set(statePath, {\n valid,\n errors\n });\n return;\n }\n const handler = handlers()[resolved.action];\n if (!handler) {\n console.warn(`No handler registered for action: ${resolved.action}`);\n return;\n }\n if (resolved.confirm) {\n return new Promise((resolve, reject) => {\n setPendingConfirmation({\n action: resolved,\n handler,\n resolve: () => {\n setPendingConfirmation(null);\n resolve();\n },\n reject: () => {\n setPendingConfirmation(null);\n reject(new Error(\"Action cancelled\"));\n }\n });\n }).then(async () => {\n setLoadingActions((prev) => new Set(prev).add(resolved.action));\n try {\n await executeAction({\n action: resolved,\n handler,\n setState: set,\n navigate: props.navigate,\n executeAction: async (name) => {\n const subBinding = {\n action: name\n };\n await execute(subBinding);\n }\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.action);\n return next;\n });\n }\n });\n }\n setLoadingActions((prev) => new Set(prev).add(resolved.action));\n try {\n await executeAction({\n action: resolved,\n handler,\n setState: set,\n navigate: props.navigate,\n executeAction: async (name) => {\n const subBinding = {\n action: name\n };\n await execute(subBinding);\n }\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.action);\n return next;\n });\n }\n } catch (err) {\n __ok = false;\n __error = err;\n throw err;\n } finally {\n const now = Date.now();\n notifyActionSettle({\n id: dispatchId,\n name: resolved.action,\n ok: __ok,\n at: now,\n durationMs: now - dispatchedAt,\n error: __error\n });\n }\n };\n const confirm = () => {\n pendingConfirmation()?.resolve();\n };\n const cancel = () => {\n pendingConfirmation()?.reject();\n };\n const ctx = {\n get handlers() {\n return handlers();\n },\n get loadingActions() {\n return loadingActions();\n },\n get pendingConfirmation() {\n return pendingConfirmation();\n },\n execute,\n confirm,\n cancel,\n registerHandler\n };\n return _$createComponent4(ActionContext.Provider, {\n value: ctx,\n get children() {\n return props.children;\n }\n });\n}\nfunction useActions() {\n const ctx = useContext4(ActionContext);\n if (!ctx) {\n throw new Error(\"useActions must be used within an ActionProvider\");\n }\n return ctx;\n}\nfunction useAction(binding) {\n const actions = useActions();\n return {\n execute: () => actions.execute(binding),\n get isLoading() {\n return actions.loadingActions.has(binding.action);\n }\n };\n}\nfunction ConfirmDialog(props) {\n const isDanger = () => props.confirm.variant === \"danger\";\n return (() => {\n var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;\n _$addEventListener(_el$, \"click\", props.onCancel, true);\n _el$2.$$click = (e) => e.stopPropagation();\n _$insert(_el$3, () => props.confirm.title);\n _$insert(_el$4, () => props.confirm.message);\n _$addEventListener(_el$6, \"click\", props.onCancel, true);\n _$insert(_el$6, () => props.confirm.cancelLabel ?? \"Cancel\");\n _$addEventListener(_el$7, \"click\", props.onConfirm, true);\n _$insert(_el$7, () => props.confirm.confirmLabel ?? \"Confirm\");\n _$effect((_$p) => _$setStyleProperty(_el$7, \"background-color\", isDanger() ? \"#dc2626\" : \"#3b82f6\"));\n return _el$;\n })();\n}\n_$delegateEvents([\"click\"]);\n\n// src/contexts/repeat-scope.tsx\nimport { createComponent as _$createComponent5 } from \"solid-js/web\";\nimport { createContext as createContext5, useContext as useContext5 } from \"solid-js\";\nvar RepeatScopeContext = createContext5(null);\nfunction RepeatScopeProvider(props) {\n return _$createComponent5(RepeatScopeContext.Provider, {\n get value() {\n return {\n item: props.item,\n index: props.index,\n basePath: props.basePath\n };\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction useRepeatScope() {\n return useContext5(RepeatScopeContext);\n}\n\n// src/index.ts\nimport { createStateStore as createStateStore2 } from \"@json-render/core\";\n\n// src/renderer.tsx\nimport { template as _$template2 } from \"solid-js/web\";\nimport { setAttribute as _$setAttribute } from \"solid-js/web\";\nimport { effect as _$effect2 } from \"solid-js/web\";\nimport { insert as _$insert2 } from \"solid-js/web\";\nimport { memo as _$memo2 } from \"solid-js/web\";\nimport { createComponent as _$createComponent6 } from \"solid-js/web\";\nimport { createContext as createContext6, useContext as useContext6, createMemo as createMemo3, createEffect as createEffect3, createSignal as createSignal4, onCleanup as onCleanup2, ErrorBoundary, Show, For } from \"solid-js\";\nimport { resolveElementProps, resolveBindings, resolveActionParam, evaluateVisibility as evaluateVisibility2, getByPath as getByPath2, isDevtoolsActive, subscribeDevtoolsActive } from \"@json-render/core\";\nvar _tmpl$2 = /* @__PURE__ */ _$template2(`<span style=display:contents>`);\nvar EMPTY_FUNCTIONS = {};\nvar FunctionsContext = createContext6(EMPTY_FUNCTIONS);\nfunction useFunctions() {\n return useContext6(FunctionsContext) ?? EMPTY_FUNCTIONS;\n}\nfunction useDevtoolsActive() {\n const [active, setActive] = createSignal4(isDevtoolsActive());\n const unsub = subscribeDevtoolsActive(() => setActive(isDevtoolsActive()));\n onCleanup2(unsub);\n return active;\n}\nfunction ElementRenderer(props) {\n const repeatScope = useRepeatScope();\n const {\n ctx\n } = useVisibility();\n const {\n execute\n } = useActions();\n const stateStore = useStateStore();\n const getSnapshot = () => stateStore.getSnapshot();\n const functions = useFunctions();\n const fullCtx = createMemo3(() => {\n const repeatItem = repeatScope?.item;\n const repeatIndex = repeatScope?.index;\n const repeatBasePath = repeatScope?.basePath;\n return {\n get stateModel() {\n return ctx.stateModel;\n },\n ...repeatItem !== void 0 ? {\n repeatItem\n } : {},\n ...repeatIndex !== void 0 ? {\n repeatIndex\n } : {},\n ...repeatBasePath !== void 0 ? {\n repeatBasePath\n } : {},\n functions\n };\n });\n const isVisible = createMemo3(() => props.element.visible === void 0 ? true : evaluateVisibility2(props.element.visible, fullCtx()));\n const emit = async (eventName) => {\n const onBindings = props.element.on;\n const binding = onBindings?.[eventName];\n if (!binding) return;\n const actionBindings = Array.isArray(binding) ? binding : [binding];\n for (const b of actionBindings) {\n if (!b.params) {\n await execute(b);\n continue;\n }\n const liveCtx = {\n ...fullCtx(),\n stateModel: getSnapshot()\n };\n const resolved = {};\n for (const [key, val] of Object.entries(b.params)) {\n resolved[key] = resolveActionParam(val, liveCtx);\n }\n await execute({\n ...b,\n params: resolved\n });\n }\n };\n const on = (eventName) => {\n const onBindings = props.element.on;\n const binding = onBindings?.[eventName];\n if (!binding) {\n return {\n emit: () => {\n },\n shouldPreventDefault: false,\n bound: false\n };\n }\n const actionBindings = Array.isArray(binding) ? binding : [binding];\n const shouldPreventDefault = actionBindings.some((b) => b.preventDefault);\n return {\n emit: () => emit(eventName),\n shouldPreventDefault,\n bound: true\n };\n };\n createEffect3(() => {\n const watchConfig = props.element.watch;\n if (!watchConfig) return;\n const paths = Object.keys(watchConfig);\n if (paths.length === 0) return;\n const unsubscribe = stateStore.subscribeChanges((changes) => {\n const changedPaths = new Set(changes.map((change) => change.path));\n void (async () => {\n for (const path of paths) {\n if (!changedPaths.has(path)) continue;\n const binding = watchConfig[path];\n if (!binding) continue;\n const bindings = Array.isArray(binding) ? binding : [binding];\n for (const b of bindings) {\n if (!b.params) {\n await execute(b);\n continue;\n }\n const liveCtx = {\n ...fullCtx(),\n stateModel: getSnapshot()\n };\n const resolved = {};\n for (const [key, val] of Object.entries(b.params)) {\n resolved[key] = resolveActionParam(val, liveCtx);\n }\n await execute({\n ...b,\n params: resolved\n });\n }\n }\n })().catch(console.error);\n });\n onCleanup2(() => {\n unsubscribe();\n });\n });\n const elementBindings = createMemo3(() => {\n const rawProps = props.element.props;\n return resolveBindings(rawProps, fullCtx());\n });\n const resolvedElement = createMemo3(() => {\n const rawProps = props.element.props;\n const resolvedProps = resolveElementProps(rawProps, fullCtx());\n return resolvedProps !== props.element.props ? {\n ...props.element,\n props: resolvedProps\n } : props.element;\n });\n return _$createComponent6(Show, {\n get when() {\n return isVisible();\n },\n get children() {\n return _$createComponent6(ErrorBoundary, {\n fallback: (err) => {\n console.error(`[json-render] Rendering error in <${props.element.type}>:`, err);\n return null;\n },\n get children() {\n return _$createComponent6(ElementRendererContent, {\n get resolvedElement() {\n return resolvedElement();\n },\n get elementKey() {\n return props.elementKey;\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n },\n emit,\n on,\n get bindings() {\n return elementBindings();\n }\n });\n }\n });\n }\n });\n}\nfunction ElementRendererContent(props) {\n const devtoolsActive = useDevtoolsActive();\n const Comp = () => props.registry[props.resolvedElement.type] ?? props.fallback;\n return _$createComponent6(Show, {\n get when() {\n return Comp();\n },\n get fallback() {\n console.warn(`No renderer for component type: ${props.resolvedElement.type}`);\n return null;\n },\n children: (ComponentFn) => {\n const Component = ComponentFn();\n const children = () => props.resolvedElement.repeat ? _$createComponent6(RepeatChildren, {\n get element() {\n return props.resolvedElement;\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n }) : _$createComponent6(For, {\n get each() {\n return props.resolvedElement.children ?? [];\n },\n children: (childKey) => {\n const childElement = () => props.spec.elements[childKey];\n return _$createComponent6(Show, {\n get when() {\n return childElement();\n },\n get fallback() {\n if (!props.loading) {\n console.warn(`[json-render] Missing element \"${childKey}\" referenced as child of \"${props.resolvedElement.type}\". This element will not render.`);\n }\n return null;\n },\n children: (el) => _$createComponent6(ElementRenderer, {\n get element() {\n return el();\n },\n elementKey: childKey,\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n })\n });\n }\n });\n const rendered = _$createComponent6(Component, {\n get element() {\n return props.resolvedElement;\n },\n get emit() {\n return props.emit;\n },\n get on() {\n return props.on;\n },\n get bindings() {\n return props.bindings;\n },\n get loading() {\n return props.loading;\n },\n get children() {\n return children();\n }\n });\n return _$createComponent6(Show, {\n get when() {\n return _$memo2(() => !!devtoolsActive())() && props.elementKey;\n },\n fallback: rendered,\n get children() {\n var _el$ = _tmpl$2();\n _$insert2(_el$, rendered);\n _$effect2(() => _$setAttribute(_el$, \"data-jr-key\", props.elementKey));\n return _el$;\n }\n });\n }\n });\n}\nfunction RepeatChildren(props) {\n const stateStore = useStateStore();\n const repeat = () => props.element.repeat;\n const statePath = () => repeat().statePath;\n const items = () => getByPath2(stateStore.state, statePath()) ?? [];\n return _$createComponent6(For, {\n get each() {\n return items();\n },\n children: (itemValue, index) => {\n const key = () => {\n const r = repeat();\n return r.key && typeof itemValue === \"object\" && itemValue !== null ? String(itemValue[r.key] ?? index()) : String(index());\n };\n return _$createComponent6(RepeatScopeProvider, {\n item: itemValue,\n get index() {\n return index();\n },\n get basePath() {\n return `${statePath()}/${index()}`;\n },\n get children() {\n return _$createComponent6(For, {\n get each() {\n return props.element.children ?? [];\n },\n children: (childKey) => {\n const childElement = () => props.spec.elements[childKey];\n return _$createComponent6(Show, {\n get when() {\n return childElement();\n },\n get fallback() {\n if (!props.loading) {\n console.warn(`[json-render] Missing element \"${childKey}\" referenced as child of \"${props.element.type}\" (repeat). This element will not render.`);\n }\n return null;\n },\n children: (el) => _$createComponent6(ElementRenderer, {\n get element() {\n return el();\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n })\n });\n }\n });\n }\n });\n }\n });\n}\nfunction Renderer(props) {\n const rootElement = createMemo3(() => {\n const spec = props.spec;\n if (!spec || !spec.root) return void 0;\n return spec.elements[spec.root];\n });\n return _$createComponent6(Show, {\n get when() {\n return rootElement();\n },\n children: (el) => _$createComponent6(ElementRenderer, {\n get element() {\n return el();\n },\n get elementKey() {\n return props.spec.root;\n },\n get spec() {\n return props.spec;\n },\n get registry() {\n return props.registry;\n },\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n })\n });\n}\nfunction JSONUIProvider(props) {\n return _$createComponent6(StateProvider, {\n get store() {\n return props.store;\n },\n get initialState() {\n return props.initialState;\n },\n get onStateChange() {\n return props.onStateChange;\n },\n get children() {\n return _$createComponent6(VisibilityProvider, {\n get children() {\n return _$createComponent6(ValidationProvider, {\n get customFunctions() {\n return props.validationFunctions;\n },\n get children() {\n return _$createComponent6(ActionProvider, {\n get handlers() {\n return props.handlers;\n },\n get navigate() {\n return props.navigate;\n },\n get children() {\n return _$createComponent6(FunctionsContext.Provider, {\n get value() {\n return props.functions ?? EMPTY_FUNCTIONS;\n },\n get children() {\n return [_$memo2(() => props.children), _$createComponent6(ConfirmationDialogManager, {})];\n }\n });\n }\n });\n }\n });\n }\n });\n }\n });\n}\nfunction ConfirmationDialogManager() {\n const {\n pendingConfirmation,\n confirm,\n cancel\n } = useActions();\n return _$createComponent6(Show, {\n get when() {\n return pendingConfirmation?.action.confirm;\n },\n children: (confirmConfig) => _$createComponent6(ConfirmDialog, {\n get confirm() {\n return confirmConfig();\n },\n onConfirm: confirm,\n onCancel: cancel\n })\n });\n}\nfunction defineRegistry(_catalog, options) {\n const registry = {};\n if (options.components) {\n for (const [name, componentFn] of Object.entries(options.components)) {\n registry[name] = (renderProps) => {\n return componentFn({\n get props() {\n return renderProps.element.props;\n },\n get children() {\n return renderProps.children;\n },\n emit: renderProps.emit,\n on: renderProps.on,\n get bindings() {\n return renderProps.bindings;\n },\n get loading() {\n return renderProps.loading;\n }\n });\n };\n }\n }\n const actionMap = options.actions ? Object.entries(options.actions) : [];\n const handlers = (getSetState, getState) => {\n const result = {};\n for (const [name, actionFn] of actionMap) {\n result[name] = async (params) => {\n const setState = getSetState();\n const state = getState();\n if (setState) {\n await actionFn(params, setState, state);\n }\n };\n }\n return result;\n };\n const executeAction2 = async (actionName, params, setState, state = {}) => {\n const entry = actionMap.find(([name]) => name === actionName);\n if (entry) {\n await entry[1](params, setState, state);\n } else {\n console.warn(`Unknown action: ${actionName}`);\n }\n };\n return {\n registry,\n handlers,\n executeAction: executeAction2\n };\n}\nfunction createRenderer(catalog, components) {\n const registry = components;\n return function CatalogRenderer(props) {\n const actionHandlers = () => props.onAction ? new Proxy({}, {\n get: (_target, prop) => {\n return (params) => props.onAction(prop, params);\n },\n has: () => true\n }) : void 0;\n return _$createComponent6(StateProvider, {\n get store() {\n return props.store;\n },\n get initialState() {\n return props.state;\n },\n get onStateChange() {\n return props.onStateChange;\n },\n get children() {\n return _$createComponent6(VisibilityProvider, {\n get children() {\n return _$createComponent6(ValidationProvider, {\n get children() {\n return _$createComponent6(ActionProvider, {\n get handlers() {\n return actionHandlers();\n },\n get children() {\n return _$createComponent6(FunctionsContext.Provider, {\n get value() {\n return props.functions ?? EMPTY_FUNCTIONS;\n },\n get children() {\n return [_$createComponent6(Renderer, {\n get spec() {\n return props.spec;\n },\n registry,\n get loading() {\n return props.loading;\n },\n get fallback() {\n return props.fallback;\n }\n }), _$createComponent6(ConfirmationDialogManager, {})];\n }\n });\n }\n });\n }\n });\n }\n });\n }\n });\n };\n}\n\n// src/hooks.ts\nimport { createSignal as createSignal5, onCleanup as onCleanup3, createMemo as createMemo4 } from \"solid-js\";\nimport {\n setByPath,\n getByPath as getByPath3,\n removeByPath,\n createMixedStreamParser,\n applySpecPatch,\n nestedToFlat,\n SPEC_DATA_PART_TYPE\n} from \"@json-render/core\";\nfunction parseLine(line) {\n try {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"//\")) {\n return null;\n }\n const parsed = JSON.parse(trimmed);\n if (parsed.__meta === \"usage\") {\n return {\n type: \"usage\",\n usage: {\n promptTokens: parsed.promptTokens ?? 0,\n completionTokens: parsed.completionTokens ?? 0,\n totalTokens: parsed.totalTokens ?? 0\n }\n };\n }\n return { type: \"patch\", patch: parsed };\n } catch {\n return null;\n }\n}\nfunction setSpecValue(newSpec, path, value) {\n if (path === \"/root\") {\n newSpec.root = value;\n return;\n }\n if (path === \"/state\") {\n newSpec.state = value;\n return;\n }\n if (path.startsWith(\"/state/\")) {\n if (!newSpec.state) newSpec.state = {};\n const statePath = path.slice(\"/state\".length);\n setByPath(newSpec.state, statePath, value);\n return;\n }\n if (path.startsWith(\"/elements/\")) {\n const pathParts = path.slice(\"/elements/\".length).split(\"/\");\n const elementKey = pathParts[0];\n if (!elementKey) return;\n if (pathParts.length === 1) {\n newSpec.elements[elementKey] = value;\n } else {\n const element = newSpec.elements[elementKey];\n if (element) {\n const propPath = \"/\" + pathParts.slice(1).join(\"/\");\n const newElement = { ...element };\n setByPath(\n newElement,\n propPath,\n value\n );\n newSpec.elements[elementKey] = newElement;\n }\n }\n }\n}\nfunction removeSpecValue(newSpec, path) {\n if (path === \"/state\") {\n delete newSpec.state;\n return;\n }\n if (path.startsWith(\"/state/\") && newSpec.state) {\n const statePath = path.slice(\"/state\".length);\n removeByPath(newSpec.state, statePath);\n return;\n }\n if (path.startsWith(\"/elements/\")) {\n const pathParts = path.slice(\"/elements/\".length).split(\"/\");\n const elementKey = pathParts[0];\n if (!elementKey) return;\n if (pathParts.length === 1) {\n const { [elementKey]: _, ...rest } = newSpec.elements;\n newSpec.elements = rest;\n } else {\n const element = newSpec.elements[elementKey];\n if (element) {\n const propPath = \"/\" + pathParts.slice(1).join(\"/\");\n const newElement = { ...element };\n removeByPath(\n newElement,\n propPath\n );\n newSpec.elements[elementKey] = newElement;\n }\n }\n }\n}\nfunction getSpecValue(spec, path) {\n if (path === \"/root\") return spec.root;\n if (path === \"/state\") return spec.state;\n if (path.startsWith(\"/state/\") && spec.state) {\n const statePath = path.slice(\"/state\".length);\n return getByPath3(spec.state, statePath);\n }\n return getByPath3(spec, path);\n}\nfunction applyPatch(spec, patch) {\n const newSpec = {\n ...spec,\n elements: { ...spec.elements },\n ...spec.state ? { state: { ...spec.state } } : {}\n };\n switch (patch.op) {\n case \"add\":\n case \"replace\": {\n setSpecValue(newSpec, patch.path, patch.value);\n break;\n }\n case \"remove\": {\n removeSpecValue(newSpec, patch.path);\n break;\n }\n case \"move\": {\n if (!patch.from) break;\n const moveValue = getSpecValue(newSpec, patch.from);\n removeSpecValue(newSpec, patch.from);\n setSpecValue(newSpec, patch.path, moveValue);\n break;\n }\n case \"copy\": {\n if (!patch.from) break;\n const copyValue = getSpecValue(newSpec, patch.from);\n setSpecValue(newSpec, patch.path, copyValue);\n break;\n }\n case \"test\": {\n break;\n }\n }\n return newSpec;\n}\nfunction useUIStream(options) {\n const [spec, setSpec] = createSignal5(null);\n const [isStreaming, setIsStreaming] = createSignal5(false);\n const [error, setError] = createSignal5(null);\n const [usage, setUsage] = createSignal5(null);\n const [rawLines, setRawLines] = createSignal5([]);\n let abortController = null;\n const clear = () => {\n setSpec(null);\n setError(null);\n };\n const send = async (prompt, context) => {\n abortController?.abort();\n abortController = new AbortController();\n setIsStreaming(true);\n setError(null);\n setUsage(null);\n setRawLines([]);\n const previousSpec = context?.previousSpec;\n let currentSpec = previousSpec && previousSpec.root ? { ...previousSpec, elements: { ...previousSpec.elements } } : { root: \"\", elements: {} };\n setSpec(currentSpec);\n try {\n const response = await fetch(options.api, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n prompt,\n context,\n currentSpec\n }),\n signal: abortController.signal\n });\n if (!response.ok) {\n let errorMessage = `HTTP error: ${response.status}`;\n try {\n const errorData = await response.json();\n if (errorData.message) {\n errorMessage = errorData.message;\n } else if (errorData.error) {\n errorMessage = errorData.error;\n }\n } catch {\n }\n throw new Error(errorMessage);\n }\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n const result = parseLine(trimmed);\n if (!result) continue;\n if (result.type === \"usage\") {\n setUsage(result.usage);\n } else {\n setRawLines((prev) => [...prev, trimmed]);\n currentSpec = applyPatch(currentSpec, result.patch);\n setSpec({ ...currentSpec });\n }\n }\n }\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n const result = parseLine(trimmed);\n if (result) {\n if (result.type === \"usage\") {\n setUsage(result.usage);\n } else {\n setRawLines((prev) => [...prev, trimmed]);\n currentSpec = applyPatch(currentSpec, result.patch);\n setSpec({ ...currentSpec });\n }\n }\n }\n options.onComplete?.(currentSpec);\n } catch (err) {\n if (err.name === \"AbortError\") {\n return;\n }\n const resolvedError = err instanceof Error ? err : new Error(String(err));\n setError(resolvedError);\n options.onError?.(resolvedError);\n } finally {\n setIsStreaming(false);\n }\n };\n onCleanup3(() => {\n abortController?.abort();\n });\n return {\n get spec() {\n return spec();\n },\n get isStreaming() {\n return isStreaming();\n },\n get error() {\n return error();\n },\n get usage() {\n return usage();\n },\n get rawLines() {\n return rawLines();\n },\n send,\n clear\n };\n}\nfunction flatToTree(elements) {\n const elementMap = {};\n let root = \"\";\n for (const element of elements) {\n elementMap[element.key] = {\n type: element.type,\n props: element.props,\n children: [],\n visible: element.visible\n };\n }\n for (const element of elements) {\n if (element.parentKey) {\n const parent = elementMap[element.parentKey];\n if (parent) {\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(element.key);\n }\n } else {\n root = element.key;\n }\n }\n return { root, elements: elementMap };\n}\nfunction useBoundProp(propValue, bindingPath) {\n const { set } = useStateStore();\n const setValue = (value) => {\n if (bindingPath) set(bindingPath, value);\n };\n return [propValue, setValue];\n}\nfunction isSpecDataPart(data) {\n if (typeof data !== \"object\" || data === null) return false;\n const obj = data;\n switch (obj.type) {\n case \"patch\":\n return typeof obj.patch === \"object\" && obj.patch !== null;\n case \"flat\":\n case \"nested\":\n return typeof obj.spec === \"object\" && obj.spec !== null;\n default:\n return false;\n }\n}\nfunction buildSpecFromParts(parts) {\n const spec = { root: \"\", elements: {} };\n let hasSpec = false;\n for (const part of parts) {\n if (part.type === SPEC_DATA_PART_TYPE) {\n if (!isSpecDataPart(part.data)) continue;\n const payload = part.data;\n if (payload.type === \"patch\") {\n hasSpec = true;\n applySpecPatch(spec, payload.patch);\n } else if (payload.type === \"flat\") {\n hasSpec = true;\n Object.assign(spec, payload.spec);\n } else if (payload.type === \"nested\") {\n hasSpec = true;\n const flat = nestedToFlat(payload.spec);\n Object.assign(spec, flat);\n }\n }\n }\n return hasSpec ? spec : null;\n}\nfunction getTextFromParts(parts) {\n return parts.filter(\n (p) => p.type === \"text\" && typeof p.text === \"string\"\n ).map((p) => p.text.trim()).filter(Boolean).join(\"\\n\\n\");\n}\nfunction useJsonRenderMessage(getParts) {\n const result = createMemo4(() => {\n const parts = getParts();\n return {\n spec: buildSpecFromParts(parts),\n text: getTextFromParts(parts)\n };\n });\n return {\n get spec() {\n return result().spec;\n },\n get text() {\n return result().text;\n },\n get hasSpec() {\n const s = result().spec;\n return s !== null && Object.keys(s.elements || {}).length > 0;\n }\n };\n}\nvar chatMessageIdCounter = 0;\nfunction generateChatId() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n chatMessageIdCounter += 1;\n return `msg-${Date.now()}-${chatMessageIdCounter}`;\n}\nfunction useChatUI(options) {\n const [messages, setMessages] = createSignal5([]);\n const [isStreaming, setIsStreaming] = createSignal5(false);\n const [error, setError] = createSignal5(null);\n let abortController = null;\n const clear = () => {\n setMessages([]);\n setError(null);\n };\n const send = async (text) => {\n if (!text.trim()) return;\n abortController?.abort();\n abortController = new AbortController();\n const userMessage = {\n id: generateChatId(),\n role: \"user\",\n text: text.trim(),\n spec: null\n };\n const assistantId = generateChatId();\n const assistantMessage = {\n id: assistantId,\n role: \"assistant\",\n text: \"\",\n spec: null\n };\n setMessages((prev) => [...prev, userMessage, assistantMessage]);\n setIsStreaming(true);\n setError(null);\n const historyForApi = [\n ...messages().filter((m) => m.id !== userMessage.id && m.id !== assistantId).map((m) => ({\n role: m.role,\n content: m.text\n })),\n { role: \"user\", content: text.trim() }\n ];\n let accumulatedText = \"\";\n let currentSpec = { root: \"\", elements: {} };\n let hasSpec = false;\n try {\n const response = await fetch(options.api, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ messages: historyForApi }),\n signal: abortController.signal\n });\n if (!response.ok) {\n let errorMessage = `HTTP error: ${response.status}`;\n try {\n const errorData = await response.json();\n if (errorData.message) {\n errorMessage = errorData.message;\n } else if (errorData.error) {\n errorMessage = errorData.error;\n }\n } catch {\n }\n throw new Error(errorMessage);\n }\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n const decoder = new TextDecoder();\n const parser = createMixedStreamParser({\n onPatch(patch) {\n hasSpec = true;\n applySpecPatch(currentSpec, patch);\n setMessages(\n (prev) => prev.map(\n (m) => m.id === assistantId ? {\n ...m,\n spec: {\n root: currentSpec.root,\n elements: { ...currentSpec.elements },\n ...currentSpec.state ? { state: { ...currentSpec.state } } : {}\n }\n } : m\n )\n );\n },\n onText(line) {\n accumulatedText += (accumulatedText ? \"\\n\" : \"\") + line;\n setMessages(\n (prev) => prev.map(\n (m) => m.id === assistantId ? { ...m, text: accumulatedText } : m\n )\n );\n }\n });\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n parser.push(decoder.decode(value, { stream: true }));\n }\n parser.flush();\n const finalMessage = {\n id: assistantId,\n role: \"assistant\",\n text: accumulatedText,\n spec: hasSpec ? {\n root: currentSpec.root,\n elements: { ...currentSpec.elements },\n ...currentSpec.state ? { state: { ...currentSpec.state } } : {}\n } : null\n };\n options.onComplete?.(finalMessage);\n } catch (err) {\n if (err.name === \"AbortError\") {\n return;\n }\n const resolvedError = err instanceof Error ? err : new Error(String(err));\n setError(resolvedError);\n setMessages(\n (prev) => prev.filter((m) => m.id !== assistantId || m.text.length > 0)\n );\n options.onError?.(resolvedError);\n } finally {\n setIsStreaming(false);\n }\n };\n onCleanup3(() => {\n abortController?.abort();\n });\n return {\n get messages() {\n return messages();\n },\n get isStreaming() {\n return isStreaming();\n },\n get error() {\n return error();\n },\n send,\n clear\n };\n}\nexport {\n ActionProvider,\n ConfirmDialog,\n JSONUIProvider,\n Renderer,\n RepeatScopeProvider,\n StateProvider,\n ValidationProvider,\n VisibilityProvider,\n buildSpecFromParts,\n createRenderer,\n createStateStore2 as createStateStore,\n defineRegistry,\n elementTreeSchema,\n flatToTree,\n getTextFromParts,\n schema,\n useAction,\n useActions,\n useBoundProp,\n useChatUI,\n useFieldValidation,\n useIsVisible,\n useJsonRenderMessage,\n useOptionalValidation,\n useRepeatScope,\n useStateBinding,\n useStateStore,\n useStateValue,\n useUIStream,\n useValidation,\n useVisibility\n};\n//# sourceMappingURL=index.mjs.map"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ function r(e) {
|
|
|
19
19
|
return e == null;
|
|
20
20
|
}
|
|
21
21
|
function i(e) {
|
|
22
|
-
let t = e.startsWith("^")
|
|
22
|
+
let t = +!!e.startsWith("^"), n = e.endsWith("$") ? e.length - 1 : e.length;
|
|
23
23
|
return e.slice(t, n);
|
|
24
24
|
}
|
|
25
25
|
function a(e, t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":[],"sources":["../../../../../../../node_modules/zod/v4/core/util.js"],"sourcesContent":["// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","names":[],"sources":["../../../../../../../node_modules/zod/v4/core/util.js"],"sourcesContent":["// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n"],"x_google_ignoreList":[0],"mappings":";AAYA,SAAgB,EAAc,GAAS;CACnC,IAAM,IAAgB,OAAO,OAAO,EAAQ,CAAC,QAAQ,MAAM,OAAO,KAAM,SAAS;AAIjF,QAHe,OAAO,QAAQ,EAAQ,CACjC,QAAQ,CAAC,GAAG,OAAO,EAAc,QAAQ,CAAC,EAAE,KAAK,GAAG,CACpD,KAAK,CAAC,GAAG,OAAO,EAAE;;AAM3B,SAAgB,EAAsB,GAAG,GAAO;AAG5C,QAFI,OAAO,KAAU,WACV,EAAM,UAAU,GACpB;;AAEX,SAAgB,EAAO,GAAQ;AAE3B,QAAO,EACH,IAAI,QAAQ;EACE;GACN,IAAM,IAAQ,GAAQ;AAEtB,UADA,OAAO,eAAe,MAAM,SAAS,EAAE,UAAO,CAAC,EACxC;;AAEX,QAAU,MAAM,2BAA2B;IAElD;;AAEL,SAAgB,EAAQ,GAAO;AAC3B,QAAO,KAAU;;AAErB,SAAgB,EAAW,GAAQ;CAC/B,IAAM,IAAQ,KAAO,WAAW,IAAI,EAC9B,IAAM,EAAO,SAAS,IAAI,GAAG,EAAO,SAAS,IAAI,EAAO;AAC9D,QAAO,EAAO,MAAM,GAAO,EAAI;;AAEnC,SAAgB,EAAmB,GAAK,GAAM;CAC1C,IAAM,KAAe,EAAI,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,QACnD,IAAa,EAAK,UAAU,EAC9B,KAAgB,EAAW,MAAM,IAAI,CAAC,MAAM,IAAI;AACpD,KAAI,MAAiB,KAAK,WAAW,KAAK,EAAW,EAAE;EACnD,IAAM,IAAQ,EAAW,MAAM,aAAa;AAC5C,EAAI,IAAQ,OACR,IAAe,OAAO,SAAS,EAAM,GAAG;;CAGhD,IAAM,IAAW,IAAc,IAAe,IAAc;AAG5D,QAFe,OAAO,SAAS,EAAI,QAAQ,EAAS,CAAC,QAAQ,KAAK,GAAG,CAAC,GACtD,OAAO,SAAS,EAAK,QAAQ,EAAS,CAAC,QAAQ,KAAK,GAAG,CAAC,GAC5C,MAAM;;AAEtC,IAAM,IAAa,OAAO,aAAa;AACvC,SAAgB,EAAW,GAAQ,GAAK,GAAQ;CAC5C,IAAI;AACJ,QAAO,eAAe,GAAQ,GAAK;EAC/B,MAAM;AACE,aAAU,EAQd,QAJI,MAAU,KAAA,MACV,IAAQ,GACR,IAAQ,GAAQ,GAEb;;EAEX,IAAI,GAAG;AACH,UAAO,eAAe,GAAQ,GAAK,EAC/B,OAAO,GAEV,CAAC;;EAGN,cAAc;EACjB,CAAC;;AAKN,SAAgB,EAAW,GAAQ,GAAM,GAAO;AAC5C,QAAO,eAAe,GAAQ,GAAM;EAChC;EACA,UAAU;EACV,YAAY;EACZ,cAAc;EACjB,CAAC;;AAEN,SAAgB,EAAU,GAAG,GAAM;CAC/B,IAAM,IAAoB,EAAE;AAC5B,MAAK,IAAM,KAAO,EAEd,QAAO,OAAO,GADM,OAAO,0BAA0B,EAAI,CACZ;AAEjD,QAAO,OAAO,iBAAiB,EAAE,EAAE,EAAkB;;AA6BzD,SAAgB,EAAI,GAAK;AACrB,QAAO,KAAK,UAAU,EAAI;;AAE9B,SAAgB,EAAQ,GAAO;AAC3B,QAAO,EACF,aAAa,CACb,MAAM,CACN,QAAQ,aAAa,GAAG,CACxB,QAAQ,YAAY,IAAI,CACxB,QAAQ,YAAY,GAAG;;AAEhC,IAAa,IAAqB,uBAAuB,QAAQ,MAAM,qBAAqB,GAAG,MAAU;AACzG,SAAgB,EAAS,GAAM;AAC3B,QAAO,OAAO,KAAS,cAAY,KAAiB,CAAC,MAAM,QAAQ,EAAK;;AAE5E,IAAa,IAAa,QAAa;AAEnC,KAAI,OAAO,YAAc,OAAe,WAAW,WAAW,SAAS,aAAa,CAChF,QAAO;AAEX,KAAI;AAGA,SAFU,SACJ,GAAG,EACF;SAED;AACN,SAAO;;EAEb;AACF,SAAgB,EAAc,GAAG;AAC7B,KAAI,EAAS,EAAE,KAAK,GAChB,QAAO;CAEX,IAAM,IAAO,EAAE;AAGf,KAFI,MAAS,KAAA,KAET,OAAO,KAAS,WAChB,QAAO;CAEX,IAAM,IAAO,EAAK;AAOlB,QAHA,EAHI,EAAS,EAAK,KAAK,MAGnB,OAAO,UAAU,eAAe,KAAK,GAAM,gBAAgB,KAAK;;AAKxE,SAAgB,EAAa,GAAG;AAK5B,QAJI,EAAc,EAAE,GACT,EAAE,GAAG,GAAG,GACf,MAAM,QAAQ,EAAE,GACT,CAAC,GAAG,EAAE,GACV;;AAwDX,IAAa,IAAmB,IAAI,IAAI;CAAC;CAAU;CAAU;CAAS,CAAC;AAEvE,SAAgB,EAAY,GAAK;AAC7B,QAAO,EAAI,QAAQ,uBAAuB,OAAO;;AAGrD,SAAgB,EAAM,GAAM,GAAK,GAAQ;CACrC,IAAM,IAAK,IAAI,EAAK,KAAK,OAAO,KAAO,EAAK,KAAK,IAAI;AAGrD,SAFI,CAAC,KAAO,GAAQ,YAChB,EAAG,KAAK,SAAS,IACd;;AAEX,SAAgB,EAAgB,GAAS;CACrC,IAAM,IAAS;AACf,KAAI,CAAC,EACD,QAAO,EAAE;AACb,KAAI,OAAO,KAAW,SAClB,QAAO,EAAE,aAAa,GAAQ;AAClC,KAAI,GAAQ,YAAY,KAAA,GAAW;AAC/B,MAAI,GAAQ,UAAU,KAAA,EAClB,OAAU,MAAM,mDAAmD;AACvE,IAAO,QAAQ,EAAO;;AAK1B,QAHA,OAAO,EAAO,SACV,OAAO,EAAO,SAAU,WACjB;EAAE,GAAG;EAAQ,aAAa,EAAO;EAAO,GAC5C;;AA0CX,SAAgB,EAAa,GAAO;AAChC,QAAO,OAAO,KAAK,EAAM,CAAC,QAAQ,MACvB,EAAM,GAAG,KAAK,UAAU,cAAc,EAAM,GAAG,KAAK,WAAW,WACxE;;AAEN,IAAa,IAAuB;CAChC,SAAS,CAAC,4BAAiD;CAC3D,OAAO,CAAC,aAAa,WAAW;CAChC,QAAQ,CAAC,GAAG,WAAW;CACvB,SAAS,CAAC,uBAAwB,qBAAsB;CACxD,SAAS,CAAC,CAAC,OAAO,WAAW,OAAO,UAAU;CACjD;AAKD,SAAgB,EAAK,GAAQ,GAAM;CAC/B,IAAM,IAAU,EAAO,KAAK,KACtB,IAAS,EAAQ;AAEvB,KADkB,KAAU,EAAO,SAAS,EAExC,OAAU,MAAM,kEAAkE;AAkBtF,QAAO,EAAM,GAhBD,EAAU,EAAO,KAAK,KAAK;EACnC,IAAI,QAAQ;GACR,IAAM,IAAW,EAAE;AACnB,QAAK,IAAM,KAAO,GAAM;AACpB,QAAI,EAAE,KAAO,EAAQ,OACjB,OAAU,MAAM,sBAAsB,EAAI,GAAG;AAE5C,MAAK,OAEV,EAAS,KAAO,EAAQ,MAAM;;AAGlC,UADA,EAAW,MAAM,SAAS,EAAS,EAC5B;;EAEX,QAAQ,EAAE;EACb,CAAC,CACuB;;AAE7B,SAAgB,EAAK,GAAQ,GAAM;CAC/B,IAAM,IAAU,EAAO,KAAK,KACtB,IAAS,EAAQ;AAEvB,KADkB,KAAU,EAAO,SAAS,EAExC,OAAU,MAAM,kEAAkE;AAkBtF,QAAO,EAAM,GAhBD,EAAU,EAAO,KAAK,KAAK;EACnC,IAAI,QAAQ;GACR,IAAM,IAAW,EAAE,GAAG,EAAO,KAAK,IAAI,OAAO;AAC7C,QAAK,IAAM,KAAO,GAAM;AACpB,QAAI,EAAE,KAAO,EAAQ,OACjB,OAAU,MAAM,sBAAsB,EAAI,GAAG;AAE5C,MAAK,MAEV,OAAO,EAAS;;AAGpB,UADA,EAAW,MAAM,SAAS,EAAS,EAC5B;;EAEX,QAAQ,EAAE;EACb,CAAC,CACuB;;AAE7B,SAAgB,EAAO,GAAQ,GAAO;AAClC,KAAI,CAAC,EAAc,EAAM,CACrB,OAAU,MAAM,mDAAmD;CAEvE,IAAM,IAAS,EAAO,KAAK,IAAI;AAE/B,KADkB,KAAU,EAAO,SAAS,GAC7B;EAGX,IAAM,IAAgB,EAAO,KAAK,IAAI;AACtC,OAAK,IAAM,KAAO,EACd,KAAI,OAAO,yBAAyB,GAAe,EAAI,KAAK,KAAA,EACxD,OAAU,MAAM,+FAA+F;;AAW3H,QAAO,EAAM,GAPD,EAAU,EAAO,KAAK,KAAK,EACnC,IAAI,QAAQ;EACR,IAAM,IAAS;GAAE,GAAG,EAAO,KAAK,IAAI;GAAO,GAAG;GAAO;AAErD,SADA,EAAW,MAAM,SAAS,EAAO,EAC1B;IAEd,CAAC,CACuB;;AAE7B,SAAgB,EAAW,GAAQ,GAAO;AACtC,KAAI,CAAC,EAAc,EAAM,CACrB,OAAU,MAAM,uDAAuD;AAS3E,QAAO,EAAM,GAPD,EAAU,EAAO,KAAK,KAAK,EACnC,IAAI,QAAQ;EACR,IAAM,IAAS;GAAE,GAAG,EAAO,KAAK,IAAI;GAAO,GAAG;GAAO;AAErD,SADA,EAAW,MAAM,SAAS,EAAO,EAC1B;IAEd,CAAC,CACuB;;AAE7B,SAAgB,EAAM,GAAG,GAAG;AAYxB,QAAO,EAAM,GAXD,EAAU,EAAE,KAAK,KAAK;EAC9B,IAAI,QAAQ;GACR,IAAM,IAAS;IAAE,GAAG,EAAE,KAAK,IAAI;IAAO,GAAG,EAAE,KAAK,IAAI;IAAO;AAE3D,UADA,EAAW,MAAM,SAAS,EAAO,EAC1B;;EAEX,IAAI,WAAW;AACX,UAAO,EAAE,KAAK,IAAI;;EAEtB,QAAQ,EAAE;EACb,CAAC,CACkB;;AAExB,SAAgB,EAAQ,GAAO,GAAQ,GAAM;CAEzC,IAAM,IADU,EAAO,KAAK,IACL;AAEvB,KADkB,KAAU,EAAO,SAAS,EAExC,OAAU,MAAM,qEAAqE;AAsCzF,QAAO,EAAM,GApCD,EAAU,EAAO,KAAK,KAAK;EACnC,IAAI,QAAQ;GACR,IAAM,IAAW,EAAO,KAAK,IAAI,OAC3B,IAAQ,EAAE,GAAG,GAAU;AAC7B,OAAI,EACA,MAAK,IAAM,KAAO,GAAM;AACpB,QAAI,EAAE,KAAO,GACT,OAAU,MAAM,sBAAsB,EAAI,GAAG;AAE5C,MAAK,OAGV,EAAM,KAAO,IACP,IAAI,EAAM;KACR,MAAM;KACN,WAAW,EAAS;KACvB,CAAC,GACA,EAAS;;OAInB,MAAK,IAAM,KAAO,EAEd,GAAM,KAAO,IACP,IAAI,EAAM;IACR,MAAM;IACN,WAAW,EAAS;IACvB,CAAC,GACA,EAAS;AAIvB,UADA,EAAW,MAAM,SAAS,EAAM,EACzB;;EAEX,QAAQ,EAAE;EACb,CAAC,CACuB;;AAE7B,SAAgB,EAAS,GAAO,GAAQ,GAAM;AAgC1C,QAAO,EAAM,GA/BD,EAAU,EAAO,KAAK,KAAK,EACnC,IAAI,QAAQ;EACR,IAAM,IAAW,EAAO,KAAK,IAAI,OAC3B,IAAQ,EAAE,GAAG,GAAU;AAC7B,MAAI,EACA,MAAK,IAAM,KAAO,GAAM;AACpB,OAAI,EAAE,KAAO,GACT,OAAU,MAAM,sBAAsB,EAAI,GAAG;AAE5C,KAAK,OAGV,EAAM,KAAO,IAAI,EAAM;IACnB,MAAM;IACN,WAAW,EAAS;IACvB,CAAC;;MAIN,MAAK,IAAM,KAAO,EAEd,GAAM,KAAO,IAAI,EAAM;GACnB,MAAM;GACN,WAAW,EAAS;GACvB,CAAC;AAIV,SADA,EAAW,MAAM,SAAS,EAAM,EACzB;IAEd,CAAC,CACuB;;AAG7B,SAAgB,EAAQ,GAAG,IAAa,GAAG;AACvC,KAAI,EAAE,YAAY,GACd,QAAO;AACX,MAAK,IAAI,IAAI,GAAY,IAAI,EAAE,OAAO,QAAQ,IAC1C,KAAI,EAAE,OAAO,IAAI,aAAa,GAC1B,QAAO;AAGf,QAAO;;AAEX,SAAgB,EAAa,GAAM,GAAQ;AACvC,QAAO,EAAO,KAAK,MAAQ;EACvB,IAAI;AAGJ,UAFC,IAAK,GAAK,SAAS,EAAG,OAAO,EAAE,GAChC,EAAI,KAAK,QAAQ,EAAK,EACf;GACT;;AAEN,SAAgB,EAAc,GAAS;AACnC,QAAO,OAAO,KAAY,WAAW,IAAU,GAAS;;AAE5D,SAAgB,EAAc,GAAK,GAAK,GAAQ;CAC5C,IAAM,IAAO;EAAE,GAAG;EAAK,MAAM,EAAI,QAAQ,EAAE;EAAE;AAgB7C,QAdK,EAAI,YAML,EAAK,UALW,EAAc,EAAI,MAAM,KAAK,KAAK,QAAQ,EAAI,CAAC,IAC3D,EAAc,GAAK,QAAQ,EAAI,CAAC,IAChC,EAAc,EAAO,cAAc,EAAI,CAAC,IACxC,EAAc,EAAO,cAAc,EAAI,CAAC,IACxC,kBAIR,OAAO,EAAK,MACZ,OAAO,EAAK,UACP,GAAK,eACN,OAAO,EAAK,OAET;;AAYX,SAAgB,EAAoB,GAAO;AAKvC,QAJI,MAAM,QAAQ,EAAM,GACb,UACP,OAAO,KAAU,WACV,WACJ;;AAuBX,SAAgB,EAAM,GAAG,GAAM;CAC3B,IAAM,CAAC,GAAK,GAAO,KAAQ;AAS3B,QARI,OAAO,KAAQ,WACR;EACH,SAAS;EACT,MAAM;EACN;EACA;EACH,GAEE,EAAE,GAAG,GAAK"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmachines/play-solid",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.32",
|
|
4
4
|
"description": "Solid renderer for XMachines Play architecture",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"catalog",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "vite build && tsc --build",
|
|
33
|
-
"clean": "rm -rf dist *.tsbuildinfo coverage .vitest-attachments test/browser/__screenshots__ node_modules/.
|
|
33
|
+
"clean": "rm -rf dist *.tsbuildinfo coverage .vitest-attachments test/browser/__screenshots__ node_modules/.svelte2tsx-*",
|
|
34
34
|
"lint": "oxlint .",
|
|
35
35
|
"format": "oxfmt .",
|
|
36
36
|
"test": "vitest",
|
|
@@ -39,33 +39,33 @@
|
|
|
39
39
|
"prepublishOnly": "npm run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@xmachines/play-actor": "1.0.0-beta.
|
|
43
|
-
"@xmachines/play-signals": "1.0.0-beta.
|
|
42
|
+
"@xmachines/play-actor": "1.0.0-beta.32",
|
|
43
|
+
"@xmachines/play-signals": "1.0.0-beta.32"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@json-render/core": "^0.
|
|
47
|
-
"@json-render/solid": "^0.
|
|
48
|
-
"@json-render/xstate": "^0.
|
|
46
|
+
"@json-render/core": "^0.18.0",
|
|
47
|
+
"@json-render/solid": "^0.18.0",
|
|
48
|
+
"@json-render/xstate": "^0.18.0",
|
|
49
49
|
"@solidjs/testing-library": "^0.8.10",
|
|
50
50
|
"@testing-library/jest-dom": "^6.9.1",
|
|
51
|
-
"@types/node": "^25.
|
|
52
|
-
"@xmachines/shared": "1.0.0-beta.
|
|
53
|
-
"@xstate/store": "
|
|
54
|
-
"jsdom": "^29.0.
|
|
55
|
-
"oxfmt": "^0.
|
|
56
|
-
"oxlint": "^1.
|
|
51
|
+
"@types/node": "^25.6.0",
|
|
52
|
+
"@xmachines/shared": "1.0.0-beta.32",
|
|
53
|
+
"@xstate/store": "^3.17.0",
|
|
54
|
+
"jsdom": "^29.0.2",
|
|
55
|
+
"oxfmt": "^0.45.0",
|
|
56
|
+
"oxlint": "^1.60.0",
|
|
57
57
|
"solid-js": "^1.9.12",
|
|
58
|
-
"typescript": "^5.9.3 || ^6.0.
|
|
58
|
+
"typescript": "^5.9.3 || ^6.0.3",
|
|
59
59
|
"vite": "^8.0.0",
|
|
60
60
|
"vite-plugin-solid": "^2.11.11",
|
|
61
|
-
"vitest": "^4.1.
|
|
61
|
+
"vitest": "^4.1.4",
|
|
62
62
|
"xstate": "^5.30.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@json-render/core": "^0.
|
|
66
|
-
"@json-render/solid": "^0.
|
|
67
|
-
"@json-render/xstate": "^0.
|
|
68
|
-
"@xstate/store": "
|
|
65
|
+
"@json-render/core": "^0.18.0",
|
|
66
|
+
"@json-render/solid": "^0.18.0",
|
|
67
|
+
"@json-render/xstate": "^0.18.0",
|
|
68
|
+
"@xstate/store": "^3.17.0",
|
|
69
69
|
"solid-js": "^1.8.0",
|
|
70
70
|
"xstate": "^5.30.0"
|
|
71
71
|
}
|