sprae 13.3.7 → 13.4.0
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/core.js +47 -22
- package/directive/each.js +58 -30
- package/directive/if.js +23 -0
- package/dist/sprae-csp.js +11 -11
- package/dist/sprae-csp.js.map +4 -4
- package/dist/sprae-csp.umd.js +11 -11
- package/dist/sprae-csp.umd.js.map +4 -4
- package/dist/sprae-preact.js +4 -4
- package/dist/sprae-preact.js.map +4 -4
- package/dist/sprae-preact.umd.js +4 -4
- package/dist/sprae-preact.umd.js.map +4 -4
- package/dist/sprae.js +4 -4
- package/dist/sprae.js.map +4 -4
- package/dist/sprae.umd.js +4 -4
- package/dist/sprae.umd.js.map +4 -4
- package/package.json +1 -1
- package/readme.md +7 -7
- package/signal.js +33 -26
- package/sprae.js +26 -19
- package/store.js +36 -10
- package/types/core.d.ts +4 -20
- package/types/core.d.ts.map +1 -1
- package/types/directive/each.d.ts.map +1 -1
- package/types/directive/if.d.ts +1 -0
- package/types/directive/if.d.ts.map +1 -1
- package/types/signal.d.ts +3 -3
- package/types/signal.d.ts.map +1 -1
- package/types/sprae.d.ts.map +1 -1
- package/types/store.d.ts +2 -0
- package/types/store.d.ts.map +1 -1
- package/directive/else.js +0 -24
- package/types/directive/else.d.ts +0 -3
- package/types/directive/else.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../core.js", "../store.js", "../signal.js", "../directive/if.js", "../directive/
|
|
4
|
-
"sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\n\n\n/** Symbol for disposal (using standard Symbol.dispose if available) */\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\"))\n\n/** Symbol for accessing element's reactive state */\nexport const _state = Symbol(\"state\")\n\n/** Symbol for enabling element effects */\nexport const _on = Symbol('on')\n\n/** Symbol for disabling element effects */\nexport const _off = Symbol('off')\n\n/** Symbol for adding child to element */\nexport const _add = Symbol('init')\n\n/** Directive prefix (default: ':') */\nexport let prefix = ':';\n\n/** Check if element is a custom element (has hyphen in tag name) */\nexport const isCE = (el) => el.localName?.includes('-')\n\n/**\n * A reactive signal containing a value.\n * @template T\n * @typedef {Object} Signal\n * @property {T} value - Current value (reading subscribes, writing notifies)\n * @property {() => T} peek - Read without subscribing\n * @property {() => T} valueOf - Get value for coercion\n * @property {() => T} toJSON - Get value for JSON serialization\n * @property {() => string} toString - Get value as string\n */\n\n/**\n * Internal effect function type.\n * @typedef {Object} EffectFn\n * @property {Set<Set<EffectFn>>} deps - Dependency sets\n * @property {() => void} fn - Original function\n */\n\n/**\n * Creates a reactive signal.\n * @template T\n * @type {<T>(value: T) => Signal<T>}\n */\nexport let signal;\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @type {(fn: () => void | (() => void)) => () => void}\n */\nexport let effect;\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @type {<T>(fn: () => T) => Signal<T>}\n */\nexport let computed;\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let batch = (fn) => fn();\n\n/**\n * Runs a function without tracking signal dependencies.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let untracked = batch;\n\n/**\n * Registry of directive handlers.\n * @type {Record<string, DirectiveHandler>}\n */\nexport let directive = {};\n\n/**\n * Registry of modifier functions.\n * @type {Record<string, ModifierHandler>}\n */\nexport let modifier = {}\n\n\nlet currentDir = null;\nlet currentEl = null;\n\n/**\n * Formats element for error message (minimal context).\n * @param {Element} [el] - Element to format\n * @returns {string} Element hint like \"<div#id.class>\"\n */\nconst elHint = (el) => {\n if (!el?.tagName) return ''\n let hint = el.tagName.toLowerCase()\n if (el.id) hint += '#' + el.id\n else if (el.className) hint += '.' + el.className.split(' ')[0]\n return `<${hint}>`\n}\n\n/**\n * Reports an error with context.\n * @param {Error|string} e - Error to report\n * @param {string} [expr] - Expression that caused error\n */\nconst err = (e, expr, el = currentEl) => {\n let msg = `\u2234 ${e}`\n if (el) msg += `\\n in ${elHint(el)}`\n if (expr) {\n const display = expr.length > 100 ? expr.slice(0, 80) + `\u2026 (${expr.length} chars)` : expr\n msg += currentDir ? `\\n ${currentDir}=\"${display}\"` : `\\n =\"${display}\"`\n }\n console.error(msg)\n}\n\n/**\n * @callback DirectiveHandler\n * @param {Element} el - Target element\n * @param {Object} state - Reactive state object\n * @param {string} expr - Expression string\n * @param {string} [name] - Directive name with modifiers\n * @returns {((value: any) => void | (() => void)) | { [Symbol.dispose]: () => void } | void}\n */\n\n/**\n * @callback ModifierHandler\n * @param {Function} fn - Function to modify\n * @param {...string} args - Modifier arguments (from dash-separated values)\n * @returns {Function}\n */\n\n/**\n * @typedef {Object} SpraeState\n * @property {Record<string, Signal>} [_signals] - Internal signals map\n */\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object} [state] - Initial state values to populate the element's reactive state.\n * @returns {SpraeState & Object} The reactive state object associated with the element.\n */\nconst sprae = (root = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (root[_state]) return Object.assign(root[_state], state)\n\n // console.group('sprae', root)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let el = root, fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => {\n if (offs) return offs\n offs = Array(fx.length)\n for (let i = 0; i < fx.length; i++) offs[i] = fx[i]()\n return offs\n }\n el[_off] = () => {\n if (!offs) return\n let current = offs\n offs = null\n for (let i = 0; i < current.length; i++) current[i]?.()\n }\n\n // destroy\n el[_dispose] ||= () => {\n el[_off]?.()\n if (mo?._root === el) { mo.disconnect(); mo = null }\n el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null\n }\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n let prev = el[_state]\n currentDir = name;\n currentEl = el;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae directives (:each, :if, :scope) that change element's state identity\n if (el[_state] !== prev) return\n } else i++\n }\n\n // custom elements own their children \u2014 don't descend\n if (el !== root && isCE(el)) return\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // real DOM: firstChild/nextSibling avoids array copy; frag.childNodes is already snapshot array\n if (el.firstChild !== undefined) {\n let child = el.firstChild, next\n while (child) (next = child.nextSibling, child.nodeType == 1 && add(child), child = next)\n }\n else for (let child of el.childNodes) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n currentDir = currentEl = null;\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n // CE roots: don't claim _state \u2014 CE manages its own via connectedCallback (parent processes attrs, CE processes children)\n if (el[_state] === undefined && !isCE(root)) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n/** Package version (injected by bundler) */\nsprae.version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev'\n\n\n// directive initializer\n/** @type {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} */\nexport let dir\n\n/**\n * Compiles an expression string into an evaluator function.\n * @type {(expr: string) => (state: Object) => any}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @returns {(state: Object, cb?: (value: any) => any) => any} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n // static time errors\n try {\n fn = compile(expr || 'undefined')\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { err(e, expr) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then\n ? (result.then(v => _out = cb(v)).catch(e => err(e, expr, this)), () => typeof _out === 'function' && _out())\n : cb(result)\n else return result\n } catch (e) {\n err(e, expr, this)\n }\n }\n}\nconst cache = {};\n\n\n/**\n * @typedef {Object} SpraeConfig\n * @property {(expr: string) => (state: Object) => any} [compile] - Custom expression compiler\n * @property {string} [prefix] - Directive prefix (default: ':')\n * @property {<T>(value: T) => Signal<T>} [signal] - Signal factory\n * @property {(fn: () => void | (() => void)) => () => void} [effect] - Effect factory\n * @property {<T>(fn: () => T) => Signal<T>} [computed] - Computed factory\n * @property {<T>(fn: () => T) => T} [batch] - Batch function\n * @property {<T>(fn: () => T) => T} [untracked] - Untracked function\n * @property {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} [dir] - Directive initializer\n */\n\n/**\n * Configure sprae with custom signals, compiler, or prefix.\n * @param {SpraeConfig} config - Configuration options\n * @returns {void}\n */\nexport const use = (config) => (\n config.compile && (compile = config.compile),\n config.prefix && (prefix = config.prefix),\n config.signal && (signal = config.signal),\n config.effect && (effect = config.effect),\n config.computed && (computed = config.computed),\n config.batch && (batch = config.batch),\n config.untracked && (untracked = config.untracked),\n config.dir && (dir = config.dir)\n)\n\n/**\n * Applies modifiers to a function.\n * @param {Function & { target?: Element }} fn - Function to decorate\n * @param {string[]} mods - Modifier names with arguments (e.g., ['throttle-500', 'prevent'])\n * @returns {Function} Decorated function\n */\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n\n/** MutationObserver reference, set by sprae.start() */\nexport let mo = null\n/** Pauses MO during DOM mutations to prevent disposing managed elements */\nexport const mutate = (fn) => { mo?.disconnect(); fn(); mo?.observe(mo._root, { childList: true, subtree: true }) }\n\n/**\n * Auto-initializes sprae on dynamically added elements.\n * Uses MutationObserver to detect new DOM nodes and apply directives.\n *\n * @param {Element} [root=document.body] - Root element to observe\n * @param {Object} [values] - Initial state values\n * @returns {Object} The reactive state object\n *\n * @example\n * ```js\n * // Auto-init on page load\n * sprae.start(document.body, { count: 0 })\n * ```\n */\nexport const start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n }\n }\n for (const el of m.removedNodes) {\n // Only dispose if element is truly removed from document\n if (el.nodeType === 1 && !root.contains(el)) el[_dispose]?.()\n }\n }\n });\n mo._root = root\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n/**\n * @typedef {Object} FragmentLike\n * @property {Document} ownerDocument - The owner document\n * @property {Node[]} childNodes - Child nodes of the fragment\n * @property {DocumentFragment} content - The document fragment content\n * @property {() => void} remove - Remove the fragment from DOM\n * @property {(el: Node) => void} replaceWith - Replace the fragment with an element\n * @property {Attr[]} attributes - Attributes from the original template\n * @property {(name: string) => void} removeAttribute - Remove an attribute\n */\n\n/**\n * Creates a fragment holder from a template element with minimal API surface.\n * @param {HTMLTemplateElement | FragmentLike} tpl - Template element or existing fragment\n * @returns {FragmentLike} Fragment-like object\n */\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let doc = tpl.ownerDocument,\n content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = doc.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n ownerDocument: doc,\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n }\n}\n\n/**\n * Converts camelCase to kebab-case.\n * @param {string} str - String to convert\n * @returns {string} Kebab-case string\n */\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n/**\n * Sets or removes an attribute on an element.\n * @param {Element} el - Target element\n * @param {string} name - Attribute name\n * @param {string | boolean | null | undefined} v - Attribute value (null/false removes, true sets empty)\n * @returns {void}\n */\nconst camelcase = (str) => str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) :\n isCE(el) ? (el[camelcase(name)] = v) :\n el.setAttribute(name, v === true ? \"\" : v);\n\n/**\n * Converts class input to className string (like clsx/classnames).\n * @param {string | string[] | Record<string, boolean> | null | undefined} c - Class input\n * @returns {string} Space-separated class string\n */\nexport const clsx = (c) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => (v && s.push(k), s), [])\n).join(' ')\n\n/**\n * Throttles a function to run at most once per tick (or custom scheduler).\n * Fires on leading edge, then on trailing edge if called during throttle.\n * @template {Function} T\n * @param {T} fn - Function to throttle\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @returns {T} Throttled function\n */\nexport const throttle = (fn, ms) => {\n let _planned = 0, _depth = 0, arg, schedule = typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule(() => {\n let dirty = _planned > 1\n _planned = 0\n if (dirty) {\n if (++_depth > 50) { _depth = 0; console.error('\u2234 Reactive loop detected'); return }\n throttled(arg)\n } else _depth = 0\n });\n }\n return throttled;\n}\n\n/**\n * Debounces a function to run after a delay since the last call.\n * @template {Function} T\n * @param {T} fn - Function to debounce\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @param {boolean} [immediate=false] - Fire on leading edge instead of trailing\n * @returns {T} Debounced function\n */\nexport const debounce = (fn, ms, immediate) => {\n let schedule = typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask;\n return immediate\n ? ((_blocked) => (arg) => !_blocked && (fn(arg), _blocked = 1, schedule(() => _blocked = 0)))()\n : ((_count = 0) => (arg, _c = ++_count) => schedule(() => _c == _count && fn(arg)))()\n}\n\nexport * from './store.js';\n\nexport default sprae\n", "/**\n * @fileoverview Signals-powered reactive proxy store\n * @module sprae/store\n */\n\nimport { signal, computed, batch, untracked } from './core.js'\n\n/** Symbol for accessing the internal signals map */\nexport const _signals = Symbol('signals')\n\n/** Symbol for the change signal that tracks object keys or array length */\nexport const _change = Symbol('change')\n\n/** Symbol for stashed setter on computed values */\nexport const _set = Symbol('set')\n\n/** Symbol for parent scope link */\nconst _parent = Symbol('parent')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n/**\n * Reactive store with signals backing.\n * @template T\n * @typedef {T & { [_signals]: Record<string | symbol, import('./core.js').Signal<any>> }} ReactiveStore\n */\n\n/**\n * Creates a reactive proxy store from an object or array.\n * Properties become signals for fine-grained reactivity.\n * Supports nested objects, arrays, computed getters, and methods.\n *\n * @template {Object} T\n * @param {T} values - Initial values object\n * @param {Object} [parent] - Parent scope for inheritance\n * @returns {ReactiveStore<T>} Reactive proxy store\n *\n * @example\n * const state = store({ count: 0, get doubled() { return this.count * 2 } })\n * state.count = 5 // triggers updates\n * state.doubled // 10 (computed)\n */\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals,\n }), {\n get: (_, k) => {\n if (k in signals) {\n // raw methods (no prototype) - bind to state for consistent `this`\n if (signals.hasOwnProperty(k) && typeof signals[k] === 'function' && !signals[k].prototype) return signals[k].bind(state)\n return (signals[k] ? signals[k].valueOf() : signals[k])\n }\n if (parent) {\n return parent[k]\n }\n return (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals).filter(k => k !== _parent)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n/**\n * Creates a reactive array store with lazy signal initialization.\n * Arrays can be large, so signals are created on-demand.\n * @param {any[]} values - Initial array values\n * @param {Object} [parent=globalThis] - Parent scope\n * @returns {ReactiveStore<any[]>} Reactive array proxy\n */\nconst list = (values, parent = globalThis) => {\n\n // init signals eagerly \u2014 shallow() is cheap (1 Proxy + 1 signal per object item)\n let signals = values.map(v => signal(shallow(v))),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // signals are eagerly initialized; null slots from .length extension default to undefined\n return (signals[k] ??= signal(undefined)).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v, shallow), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v, shallow) : create(signals, k, v, shallow)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n return state\n}\n\n/**\n * Creates a signal for a property value.\n * Skips wrapping for untracked props (underscore prefix), existing signals, and functions.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - Property value\n */\nconst create = (signals, k, v, wrap = store) => (signals[k] = (k[0] == '_' || v?.peek || typeof v === 'function') ? v : signal(wrap(v)))\n\n/** Lightweight reactive wrapper for array items \u2014 avoids full store() per item. */\nconst shallow = (v) => {\n if (!v || typeof v !== 'object' || v.constructor !== Object) return v\n if (v[_change]) return v // already reactive (store or shallow proxy)\n let ver = signal(0)\n return new Proxy(v, {\n get: (t, k) => k === _signals ? t : k === _change ? ver : (ver.value, t[k]),\n set: (t, k, val) => { let prev = t[k]; t[k] = val; if (prev !== val) ver.value++; return 1 },\n has: () => true\n })\n}\n\n/**\n * Updates a signal value, handling arrays specially for efficient patching.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - New value\n */\nconst set = (signals, k, v, wrap = store) => {\n if (k[0] === '_' || typeof signals[k] === 'function') return (signals[k] = v)\n let _s = signals[k], _v = _s.peek?.() ?? _s\n if (v === _v) return\n // stashed _set for value with getter/setter\n if (_s[_set]) return _s[_set](v)\n // patch store array in-place to preserve identity (avoids reactive loops when an effect reads + writes same prop)\n if (Array.isArray(v) && Array.isArray(_v)) {\n if (_change in _v) untracked(() => batch(() => { for (let i = 0; i < v.length; i++) _v[i] = v[i]; _v.length = v.length }))\n else _s.value = _change in v ? v : list(v)\n }\n else _s.value = wrap(v)\n}\n\nexport default store\n", "/**\n * @fileoverview Minimal signals implementation (preact-signals compatible)\n * @module sprae/signal\n */\n\n/** @type {import('./core.js').EffectFn | null} */\nlet current\n\nlet depth = 0\n\n/** @type {Set<import('./core.js').EffectFn> | null} */\nlet batched;\n\n/**\n * Creates a reactive signal.\n * @template T\n * @param {T} v - Initial value\n * @returns {import('./core.js').Signal<T>}\n */\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @param {() => void | (() => void)} fn - Effect function, may return cleanup\n * @returns {() => void} Dispose function\n */\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n if (!fn) return // disposed during batch flush\n let tmp = _teardown;\n _teardown = null;\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 50) {\n depth--; current = prev;\n // dispose: unsubscribe from all deps so this effect never fires again\n _teardown = fn = _fx.fn = null; for (let dep of _deps) dep.delete(_fx); _deps.clear()\n console.error('\u2234 Reactive loop detected'); return\n }\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); _teardown = fn = _fx.fn = null; for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @param {() => T} fn - Computation function\n * @returns {import('./core.js').Signal<T>}\n */\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @param {() => T} fn - Function containing updates\n * @returns {T}\n */\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\n/**\n * Runs a function without tracking dependencies.\n * @template T\n * @param {() => T} fn - Function to run untracked\n * @returns {T}\n */\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "import sprae, { throttle, _on, _off, _state, frag, mutate } from '../core.js';\n\n/**\n * Conditional directive - shows/hides element based on condition.\n * Works with :else and :else :if for branching.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n let _holder, _el\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n mutate(() => el.replaceWith(_holder = el.ownerDocument.createTextNode('')))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n _holder._match = null\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _holder._match) {\n mutate(() => {\n _holder._match?.[0].remove()\n _holder._match?.[0][_off]?.()\n if (_holder._match = match) {\n _holder.before(_holder._match[0].content || _holder._match[0])\n // check if element needs initial sprae (null) vs just re-enabling (_on)\n !_holder._match[0][_state] ? (delete _holder._match[0][_state], sprae(_holder._match[0], state)) : _holder._match[0][_on]?.()\n }\n })\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n let cb = value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n cb[_off] = () => { _el._holder._match?.[0][_off]?.(); _el._holder._match = null }\n return cb\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n/**\n * Else directive - conditional branch following :if.\n * Can be used as `:else` or `:else :if=\"condition\"`.\n * @param {Element | HTMLTemplateElement} el - Element with directive\n * @returns {() => void} Update function\n */\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\n/**\n * Text directive - sets textContent reactively.\n * Preserves caret/selection position across updates.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @returns {(v: any) => void} Update function\n */\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => {\n v = typeof v === 'function' ? v(el.textContent) : v\n v = v == null ? \"\" : \"\" + v\n let cur = el.textContent\n if (cur === v) return\n\n // append-only: reuse text node, skip caret save/restore\n let node = el.firstChild\n if (node && v.startsWith(cur)) { node.appendData(v.slice(cur.length)); return }\n\n // caret preservation only matters when this element holds focus \u2014\n // calling getSelection() during DOM mutations forces sync layout in Chromium (O(n\u00B2) for lists)\n let root = el.ownerDocument, active = root.activeElement\n let s = active && (active === el || el.contains(active)) ? root.getSelection?.() : null\n let off = s?.rangeCount && el.contains(s.anchorNode) ? s.getRangeAt(0).startOffset : -1\n\n el.textContent = v\n\n // restore caret\n if (off >= 0 && el.firstChild) {\n let pos = Math.min(off, el.firstChild.textContent.length)\n let r = new Range()\n r.setStart(el.firstChild, pos)\n r.collapse(true)\n s.removeAllRanges()\n s.addRange(r)\n }\n }\n)\n", "import { clsx } from \"../core.js\";\n\n/**\n * Class directive - manages CSS classes reactively.\n * Supports strings, arrays, and objects (like clsx/classnames).\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | string[] | Record<string, boolean>) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _cur = null, _new, _prev = null\n let clearAttr = () => !el.classList.length && el.removeAttribute('class')\n\n return (v) => {\n v = typeof v === 'function' ? v(el.className) : v\n\n if (v?.constructor === Object) {\n _prev = null\n if (_cur) for (let c of _cur) if (!v[c]) el.classList.remove(c), _cur.delete(c)\n if (!_cur?.size) _cur = null\n for (let c in v) if (v[c] && !_cur?.has(c)) el.classList.add(c), (_cur ||= new Set).add(c)\n if (!_cur) clearAttr()\n return\n }\n\n v = clsx(v)\n if (v === _prev) return\n _prev = v\n\n _new = null\n if (v) for (let c of v.split(' ')) c && (_new ||= new Set).add(c)\n if (_cur) for (let c of _cur) if (!_new?.has(c)) el.classList.remove(c)\n if (_new) for (let c of _new) if (!_cur?.has(c)) el.classList.add(c)\n if (!_new) clearAttr()\n _cur = _new\n }\n}\n", "import { attr } from \"../core.js\";\n\n/**\n * Style directive - sets inline styles reactively.\n * Accepts string or object. Preserves static styles.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | Record<string, string> | ((style: CSSStyleDeclaration) => any)) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _static;\n\n return v => {\n if (_static === undefined) _static = el.getAttribute(\"style\") ?? \"\"\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static ? _static + '; ' + v : v)\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] >= 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "/**\n * Effect directive - runs side effects.\n * Calls function result if expression evaluates to a function.\n * @returns {(fn: any) => any} Update function\n */\nexport default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, _dispose } from \"../core.js\";\n\n/**\n * Value directive - one-way binding (state \u2192 DOM).\n * Sets element value/checked/selected from state.\n * For write-back (DOM \u2192 state), use :change directive.\n *\n * @param {HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement} el - Form element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n // select elements need children spraed first (for :each options)\n if (el.type?.startsWith('select')) sprae(el, state)\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n _from = el.selectionStart,\n _to = el.selectionEnd,\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.checked = el.value === value, attr(el, 'checked', el.checked || null)\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) value.some(v => v == o.value) ? o.setAttribute('selected', '') : o.removeAttribute('selected')\n } :\n (value) => (el.value = value)\n}\n", "import { parse } from \"../core.js\"\n\n/**\n * Creates a setter function for assigning a value to a state path.\n * @param {string} expr - Expression to assign to (e.g., \"x\" or \"refs.el\")\n * @returns {(target: Object, value: any) => void} Setter function\n */\nconst setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n target.__ = value; _set(target), delete target.__\n}\n\n/**\n * Ref directive - stores element reference in state or calls callback with element.\n *\n * :ref=\"x\" \u2192 state.x = el\n * :ref=\"refs.el\" \u2192 state.refs.el = el\n * :ref=\"el => setup(el)\" \u2192 calls callback with element\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Variable name, path, or callback expression\n */\nexport default (el, state, expr) => {\n let result = parse(expr).call(el, state)\n if (typeof result === 'function') result(el)\n else setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, frag, _state, _signals, signal, computed } from '../core.js'\nimport { _set } from '../store.js'\n\n/**\n * Scope directive - creates a child scope with local state.\n * Properties merge into a new scope inheriting from parent.\n */\nexport default (el, rootState) => {\n let state = el[_state] = store({}, rootState), init = false\n\n let holder, _frag = el.content && frag(el)\n if (_frag) el.replaceWith(holder = el.ownerDocument.createTextNode(''))\n\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n if (values !== state) {\n for (let k in values) {\n let d = Object.getOwnPropertyDescriptor(values, k)\n // getter \u2192 computed signal (same pattern as store.js:122-124)\n if (d?.get) { (state[_signals][k] = computed(d.get.bind(state)))[_set] = d.set?.bind(state); continue }\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n if (k in state[_signals]) state[k] = v\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n return !init && (init = true, !holder && (delete el[_state]), untracked(() => (holder?.before(_frag.content || el), sprae(_frag || el, state))))\n }\n}\n", "import sprae, { parse, _state, _off, effect, _change, _signals, frag, throttle, mutate } from \"../core.js\";\n\n// Row scope proxies \u2014 positional reads item via cur[idx], keyed holds direct ref\nconst posHandler = {\n get: (s, k) => k === s.v ? s.c?.[s.i] : k === s.k ? (s.o ? s.o[s.i] : s.i) : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.c && (s.c[s.i] = v)) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\nconst keyHandler = {\n get: (s, k) => k === s.v ? s.r : k === s.k ? s.i : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.r = v) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\n\nconst rm = r => { r.el[Symbol.dispose]?.(); r.el.remove() }\n\n/**\n * Each directive - renders list items from array/object/number.\n * Syntax: `:each=\"item in items\"` or `:each=\"(item, idx) of items\"`\n *\n * Keyed by object identity for arrays of objects (including store arrays).\n * Primitives use positional (index-based) mode.\n */\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/)\n\n let doc = tpl.ownerDocument\n let holder = tpl._eachHolder || (tpl._eachHolder = doc.createTextNode(\"\"))\n let rowMap = new Map, rows = [], items, keys, cur, keyed = false\n\n let mkrow = (scope, h) => {\n let proxy = new Proxy(scope, h)\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true)\n return { el, scope, proxy, node: el.content || el }\n }\n\n let insert = pending => {\n if (!pending.length) return\n let f = pending.length > 1 ? doc.createDocumentFragment() : null\n for (let r of pending) f ? f.appendChild(r.node) : holder.before(r.node)\n if (f) holder.before(f)\n for (let r of pending) sprae(r.el, r.proxy)\n }\n\n let update = throttle(() => mutate(() => {\n let src = items, newl = src.length, prevl = rows.length\n\n // detect keyed: array of objects (store items are shallow proxies \u2014 keyed by proxy identity)\n keyed = false\n for (let i = 0; i < newl; i++) {\n if (src[i] != null) { keyed = typeof src[i] === 'object'; break }\n }\n\n if (keyed && prevl) {\n let newRows = [], pending = [], seen = new Set(), moved = false\n\n for (let i = 0; i < newl; i++) {\n let id = src[i]\n if (id != null && typeof id === 'object') {\n if (seen.has(id)) return // intermediate swap \u2014 retry after next index write\n seen.add(id)\n }\n let row = rowMap.get(id)\n if (row) {\n if (row.scope.i !== i) moved = true\n row.scope.i = i; row.scope.r = id\n } else {\n row = mkrow({ p: state, v: itemVar, k: idxVar, r: id, i, l: null }, keyHandler)\n rowMap.set(id, row)\n pending.push(row)\n }\n newRows.push(row)\n }\n\n for (let [id, row] of rowMap) if (!seen.has(id)) { rm(row); rowMap.delete(id); moved = true }\n\n insert(pending)\n\n if (moved) {\n let next = holder\n for (let i = newRows.length - 1; i >= 0; i--) {\n let n = newRows[i].el._holder || newRows[i].el.content || newRows[i].el\n if (n.nextSibling !== next) next.before(n)\n next = n\n }\n }\n\n rows = newRows\n } else {\n // --- POSITIONAL ---\n if (prevl && cur !== src) {\n for (let r of rows) rm(r)\n rows.length = 0; prevl = 0; rowMap.clear()\n }\n cur = src\n\n if (newl < prevl) {\n for (let i = newl; i < prevl; i++) rm(rows[i])\n rows.length = newl\n }\n\n for (let i = 0; i < Math.min(prevl, newl); i++) {\n rows[i].scope.c = src\n if (keys) rows[i].scope.o = keys\n }\n\n if (newl > prevl) {\n let pending = []\n for (let i = prevl; i < newl; i++) {\n let row = keyed\n ? mkrow({ p: state, v: itemVar, k: idxVar, r: src[i], i, l: null }, keyHandler)\n : mkrow({ p: state, v: itemVar, k: idxVar, c: src, i, o: keys, l: null }, posHandler)\n rows.push(row)\n if (keyed) rowMap.set(src[i], row)\n pending.push(row)\n }\n insert(pending)\n }\n }\n }))\n\n if (tpl.parentNode) mutate(() => tpl.replaceWith(holder))\n tpl[_state] = null\n\n let cb = value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n let off = effect(() => {\n items[_change]?.value\n if (items[_signals]) for (let i = 0, n = items.length; i < n; i++) items[i] // index writes (swap/replace)\n update()\n })\n return () => off()\n }\n cb.eval = parse(rhs)\n cb[_off] = () => { for (let r of rows) rm(r); rows.length = 0; rowMap.clear() }\n return cb\n}\n", "import { attr, isCE } from \"../core.js\";\n\n/**\n * Default attribute directive - sets any attribute value.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Attribute name\n * @returns {(v: any) => void} Update function\n */\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' && !isCE(el) ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase, isCE } from \"../core.js\";\n\n/**\n * Spread directive - sets multiple attributes from object.\n * Keys are converted from camelCase to kebab-case.\n * @param {Element} target - Target element\n * @returns {(value: Record<string, any>) => void} Update function\n */\nexport default (target) => value => { let ce = isCE(target); for (let key in value) attr(target, ce ? key : dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\n/**\n * Event directive - attaches event listeners with modifiers.\n * Syntax: `:onclick=\"handler\"` or `:onclick.prevent.stop=\"handler\"`\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Event name with modifiers (e.g., 'onclick.prevent')\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n trigger[Symbol.dispose]?.()\n }\n }\n}\n", "import { _dispose, parse, decorate } from \"../core.js\"\n\n/**\n * Sequence directive - chains event handlers.\n * Syntax: `:onclick..keyup.enter=\"handler\"` - click triggers, then waits for Enter.\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} names - Chained event names separated by `..`\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n const evaluate = parse(expr).bind(el)\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import sprae, { untracked, frag, _dispose, _state } from \"../core.js\"\n\nconst isTemplate = v => !!v?.content\n\n/**\n * HTML directive - sets innerHTML and initializes nested directives.\n * Supports templates for fragment insertion.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(v: string | HTMLTemplateElement | ((html: string) => string)) => void | (() => void)} Update function\n */\nexport default (el, state) => {\n // <template :html=\"a\"/> - fragment case: use placeholder + frag\n if (el.content) {\n let _el, html = el.innerHTML,\n doc = el.ownerDocument,\n holder = el._holder\n\n if (!holder) el.replaceWith(holder = doc.createTextNode(''))\n\n return v => {\n if (typeof v === 'function') v = v(html)\n\n // :if case: remove current content from DOM\n if (el._holder) el.remove(), el.content.replaceChildren()\n _el?.[_dispose]?.()\n _el?.remove()\n\n if (v != null && v !== '') {\n _el = isTemplate(v)\n ? (html = v.innerHTML, frag(v))\n : frag((_el = doc.createElement('template'), _el.innerHTML = html = v, _el))\n\n untracked(() => sprae(_el, state))\n\n holder.before(_el.content)\n\n // :if case: update childNodes in-place for remove() closure\n if (el._holder) el.childNodes.splice(0, Infinity, ..._el.childNodes)\n\n return _el[_dispose]\n }\n else if (el._holder) el.childNodes.length = 0, html = ''\n }\n }\n\n return v => (\n v = typeof v === 'function' ? v(el.innerHTML) : v,\n isTemplate(v) ? el.replaceChildren(v.content.cloneNode(true)) : (el.innerHTML = v == null ? \"\" : v),\n el[_state] &&= null,\n untracked(() => sprae(el, state)),\n el[_dispose]\n )\n}\n", "/**\n * Portal directive - teleports element to another container.\n * Value can be selector string, element, or falsy to return home.\n * @param {Element} el - Element to teleport\n * @param {Object} state - State object\n * @param {string} expr - Expression\n * @returns {(value: string | Element | null | false) => void} Update function\n */\nexport default (el, state, expr) => {\n const doc = el.ownerDocument\n const comment = doc.createComment(':portal')\n let currentTarget = null\n\n // Insert placeholder before element\n el.before(comment)\n\n return (value) => {\n const root = el.getRootNode()\n const target = typeof value === 'string'\n ? (root.querySelector?.(value) || doc.querySelector(value))\n : value?.nodeType === 1 ? value\n : value ? doc.body : null\n\n if (target === currentTarget) return\n\n if (target) target.appendChild(el)\n else comment.after(el)\n\n currentTarget = target\n\n return () => { currentTarget && (comment.after(el), currentTarget = null) }\n }\n}\n", "/**\n * Hidden directive - toggles the hidden attribute.\n * @param {Element} el - Target element\n * @returns {(value: any) => boolean} Update function\n */\nexport default (el) => (value) => el.hidden = !!value\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Mount directive - lifecycle observer.\n * Runs once on connect. Function form receives element, can return cleanup.\n * Statement form runs directly.\n *\n * :mount=\"console.log('connected')\"\n * :mount=\"el => (setup(el), () => cleanup(el))\"\n * :mount=\"el => ref = el\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n let cleanup\n\n const trigger = decorate(Object.assign(() => {\n const result = evaluate(state, fn => typeof fn === 'function' ? fn(el) : fn)\n if (typeof result === 'function') cleanup = result\n }, { target: el }), mods)\n\n trigger()\n\n return {\n [_dispose]() {\n cleanup?.()\n cleanup = null\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Change directive - normalized input write-back observer.\n * Handles type detection, coercion, caret preservation.\n *\n * :change=\"v => x = v\"\n * :change.debounce-300=\"v => query = v\"\n *\n * @param {Element} el - Form element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression (receives coerced value)\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n // coerce value from element based on input type\n const coerce =\n el.type === 'checkbox' ? () => el.checked :\n el.type === 'select-multiple' ? () => [...el.selectedOptions].map(o => o.value) :\n /^(date|time|month|week)/.test(el.type) ? () => el.value :\n () => el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber\n\n const handler = decorate(Object.assign(() => {\n evaluate(state, fn => typeof fn === 'function' ? fn(coerce()) : fn)\n }, { target: el }), mods)\n\n el.addEventListener('input', handler)\n el.addEventListener('change', handler)\n\n return {\n [_dispose]() {\n el.removeEventListener('input', handler)\n el.removeEventListener('change', handler)\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Intersect directive - IntersectionObserver wrapper.\n * Statement form fires on enter. Function form receives entry for full control.\n *\n * :intersect=\"visible = true\"\n * :intersect.once=\"loadImage()\"\n * :intersect=\"entry => visible = entry.isIntersecting\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst intersect = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n let once = mods.includes('once')\n\n const trigger = decorate(Object.assign((entry) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(entry) : fn)\n }, { target: el }), mods)\n\n const io = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n trigger(entry)\n if (once) io.disconnect()\n }\n }\n })\n\n io.observe(el)\n\n return {\n [_dispose]() { io.disconnect() }\n }\n}\n\nintersect.observer = true\nexport default intersect\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Resize directive - ResizeObserver wrapper.\n * Function form receives {width, height, entry} object.\n *\n * :resize=\"({width, height}) => cols = Math.floor(width / 200)\"\n * :resize.throttle-100=\"({width}) => narrow = width < 600\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst resize = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n const trigger = decorate(Object.assign((size) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(size) : fn)\n }, { target: el }), mods)\n\n const ro = new ResizeObserver(entries => {\n for (const entry of entries) {\n const rect = entry.contentRect\n trigger({ width: rect.width, height: rect.height, entry })\n }\n })\n\n ro.observe(el)\n\n return {\n [_dispose]() { ro.disconnect() }\n }\n}\n\nresize.observer = true\nexport default resize\n", "/**\n * @fileoverview Sprae - lightweight reactive HTML templating library\n * @module sprae\n */\n\nimport store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add, start, isCE } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\nimport _html from \"./directive/html.js\";\nimport _portal from \"./directive/portal.js\";\nimport _hidden from \"./directive/hidden.js\";\nimport _mount from \"./directive/mount.js\";\nimport _change from \"./directive/change.js\";\nimport _intersect from \"./directive/intersect.js\";\nimport _resize from \"./directive/resize.js\";\n\n\n// mark observers: they handle own modifiers, bypass reactive plumbing\n_mount.observer = _change.observer = true\n\nObject.assign(directive, {\n _: _default,\n '': _spread,\n class: _class,\n text: _text,\n html: _html,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each,\n portal: _portal,\n hidden: _hidden,\n mount: _mount,\n change: _change,\n intersect: _intersect,\n resize: _resize,\n})\n\n\n/**\n * Directive initializer with modifiers support.\n * @param {Element} target - Target element\n * @param {string} name - Directive name with modifiers (e.g., 'onclick.throttle-500')\n * @param {string} expr - Expression string\n * @param {Object} state - Reactive state object\n * @returns {() => (() => void) | void} Initializer function that returns a disposer\n */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n let hasMods = mods.length > 0\n\n return () => {\n let el = target, update, change, trigger, count = 0\n\n if (hasMods) {\n // modifiers can retarget the update or schedule it, so they keep the trigger indirection\n change = signal(0)\n trigger = decorate(Object.assign(() => change.value++, { target }), mods)\n el = trigger.target ?? target\n }\n\n update = create(el, state, expr, dirName)\n\n if (!update?.call) return update?.[_dispose]\n\n let evaluate = update.eval ?? parse(expr).bind(el),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n // use element's own state for expression evaluation, unless it's a custom element\n // (custom elements: directives are parent prop setters, must evaluate against parent state)\n if (!isCE(el)) state = el[_state] ?? state\n\n let off = hasMods ? effect(() => {\n change.value == count ? trigger() : (count = change.value, _out = evaluate(state, update))\n return out\n }) : effect(() => (_out = evaluate(state, update), out))\n if (!(_state in el)) return off\n let _d = 0\n return () => { if (_d) return; _d = 1; off(); update[_off] ? update[_off]() : el[_dispose]?.() }\n }\n}\n\n// Parses time string to ms: 100, 100ms, 1s, 1m\nconst parseTime = (t) => !t ? 0 : typeof t === 'number' ? t :\n (([, n, u] = t.match(/^(\\d+)(ms|s|m)?$/) || []) => (n = +n, u === 's' ? n * 1000 : u === 'm' ? n * 60000 : n))()\n\n// Creates scheduler from time/keyword (idle, raf, tick, or ms)\nconst scheduler = (t) =>\n t === 'idle' ? requestIdleCallback :\n t === 'raf' ? requestAnimationFrame :\n !t || t === 'tick' ? queueMicrotask :\n (fn) => setTimeout(fn, parseTime(t))\n\n// Built-in modifiers for timing, targeting, and event handling\nObject.assign(modifier, {\n /**\n * Delays callback by interval since last call (trailing edge).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm. Add -immediate for leading edge.\n * Examples: .debounce, .debounce-100, .debounce-1s, .debounce-raf, .debounce-idle, .debounce-100-immediate\n */\n debounce: (fn, a, b) => debounce(fn, scheduler(a === 'immediate' ? b : a), a === 'immediate' || b === 'immediate'),\n /**\n * Limits callback rate to interval (leading + trailing edges).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm.\n * Examples: .throttle, .throttle-100, .throttle-1s, .throttle-raf, .throttle-idle\n */\n throttle: (fn, a) => throttle(fn, scheduler(a)),\n /** Runs callback after delay. Supports: tick (default), raf, idle, N, Nms, Ns, Nm. */\n delay: (fn, a) => ((sched = scheduler(a)) => (e) => sched(() => fn(e)))(),\n /** Shortcut for delay-tick (next microtask). */\n tick: (fn) => (e) => queueMicrotask(() => fn(e)),\n /** Shortcut for delay-raf (next animation frame). */\n raf: (fn) => (e) => requestAnimationFrame(() => fn(e)),\n\n /** Calls handler only once. */\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n /** Attaches event listener to window. */\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n /** Attaches event listener to document. */\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n /** Attaches event listener to document root element (<html>). */\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n /** Attaches event listener to body. */\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n /** Attaches event listener to parent element. */\n parent: fn => (fn.target = fn.target.parentNode, fn),\n /** Triggers only when event target is the element itself. */\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n /** Triggers when event is outside the element. Ignores drag-out (pointerdown inside, pointerup outside). */\n away: (fn, _pd) => {\n let doc = fn.target.ownerDocument, pdHandler = e => _pd = e.target, _skip = doc.currentEvent || doc.defaultView?.event\n doc.addEventListener('pointerdown', pdHandler, true)\n return Object.assign(\n (e) => e !== _skip && !fn.target.contains(e.type === 'click' ? _pd ?? e.target : e.target) && e.target.isConnected && fn(e),\n { target: doc, [_dispose]: () => doc.removeEventListener('pointerdown', pdHandler, true) }\n )\n },\n\n /** Calls preventDefault() before handler. */\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n /** Calls stopPropagation() or stopImmediatePropagation() (with -immediate). */\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n /** Sets passive option for event listener. */\n passive: fn => (fn.passive = true, fn),\n /** Sets capture option for event listener. */\n capture: fn => (fn.capture = true, fn),\n})\n/** Alias for .away modifier */\nmodifier.outside = modifier.away\n\n/**\n * Key testers for keyboard event modifiers.\n * @type {Record<string, (e: KeyboardEvent) => boolean>}\n */\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key?.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key?.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// match key by name, or by e.key (case-insensitive), or by keyCode (digits)\nconst keyMatch = (k, e) => keys[k]?.(e) || e.key?.toLowerCase() === k || e.keyCode == k\n\n// Augment modifiers with key testers (e.g., .enter, .ctrl, .ctrl-a, .ctrl-65)\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keyMatch(a, e)) && (!b || keyMatch(b, e)) && fn(e)\n\n\n// Checks for first-level semicolons (statement vs expression)\nconst hasSemi = s => {\n let d = 0, q = '', esc = 0\n for (let ch of s) {\n if (q) {\n if (esc) esc = 0\n else if (ch === '\\\\') esc = 1\n else if (ch === q) q = ''\n continue\n }\n if (ch === ';' && !d) return true\n if (ch === '{') d++\n else if (ch === '}') d--\n else if (ch === '\"' || ch === \"'\" || ch === '`') q = ch\n }\n return false\n}\n\n// Configure sprae with default compiler and signals\nuse({\n\n// Default compiler wraps expression for new Function\n compile: expr => {\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(expr));\n // first-level semicolons - no return\n else if (hasSemi(expr));\n else expr = `return ${expr}`\n // async expression\n if (/\\bawait\\s/.test(expr)) expr = `return (async()=>{${expr}})()`\n return sprae.constructor(`with(arguments[0]){${expr}}`)\n },\n // these 2 exceptions might look inconsistent, but arguably that's the cleanest way to avoid coupling\n dir: (el, name, expr, state) => {\n // sequences: handle own modifiers, return dispose\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let dirName = str.split('.')[0]\n // events and observers handle own modifiers, return dispose\n let obs = directive[dirName]\n let start = str.startsWith('on') ? () => _event(el, state, expr, str)[_dispose]\n : obs?.observer ? () => obs(el, state, expr, str)[_dispose]\n : dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// Expose for runtime configuration\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n/**\n * Disposes a spraed element, cleaning up all effects and state.\n * @param {Element} el - Element to dispose\n */\nconst dispose = sprae.dispose = (el) => el[_dispose]?.()\n\n\nsprae.start = start\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use, throttle, debounce, dispose }\n", "// Pratt parser core + operator registry + compile\n// Character codes\nconst SPACE = 32;\n\n// current string, index\nexport let idx, cur,\n\n // parse input string to AST\n parse = s => (idx = 0, cur = s, parse.newline = false, s = expr(), cur[idx] ? err() : s || ''),\n\n // display error with context\n err = (msg = 'Unexpected token', at = idx,\n lines = cur.slice(0, at).split('\\n'),\n last = lines.pop(),\n before = cur.slice(Math.max(0, at - 40), at),\n ptr = '\\u032D',\n chr = (cur[at] || ' ') + ptr,\n after = cur.slice(at + 1, at + 20)\n ) => {\n throw SyntaxError(`${msg} at ${lines.length + 1}:${last.length + 1}\\n${(cur[at-41]!=='\\n' ? '' : '') +before}${chr}${after}`)\n },\n\n // attach location to node (returns node for chaining)\n loc = (node, at = idx) => (Array.isArray(node) && (node.loc = at), node),\n\n // advance until condition meets\n next = (is, from = idx, l) => {\n while (l = is(cur.charCodeAt(idx))) idx += l;\n return cur.slice(from, idx);\n },\n\n // advance n characters\n skip = (n=1) => cur[idx+=n],\n\n // set position (for backtracking)\n seek = n => idx = n,\n\n // a + b - c\n expr = (p = 0, end) => {\n let cc, token, newNode, fn, nl;\n if (end) parse.asi && (parse.newline = false);\n\n while (\n (cc = parse.space()) &&\n (nl = parse.newline, 1) &&\n cc !== end &&\n (newNode =\n ((fn = lookup[cc]) && fn(token, p)) ??\n (token && nl && parse.asi?.(token, p, expr)) ??\n (!token && next(parse.id))\n )\n ) token = newNode;\n\n if (end) cc == end ? idx++ : err('Unclosed ' + String.fromCharCode(end - (end > 42 ? 2 : 1)));\n\n return token;\n },\n\n // skip space chars, return first non-space character\n space = parse.space = (cc, from = idx) => {\n while ((cc = cur.charCodeAt(idx)) <= SPACE) {\n if (parse.asi && cc === 10) parse.newline = true\n idx++\n }\n return cc\n },\n\n // peek at next non-space char without modifying idx\n peek = (from = idx) => { while (cur.charCodeAt(from) <= SPACE) from++; return cur.charCodeAt(from); },\n\n // is char an id?\n id = parse.id = c =>\n (c >= 48 && c <= 57) ||\n (c >= 65 && c <= 90) ||\n (c >= 97 && c <= 122) ||\n c == 36 || c == 95 ||\n (c >= 192 && c != 215 && c != 247),\n\n // check if word matches at current position\n word = (w, l = w.length) => cur.substr(idx, l) === w && !parse.id(cur.charCodeAt(idx + l)),\n\n // parse (...) group\n parens = () => (skip(), expr(0, 41)),\n\n // operator lookup table\n lookup = [],\n\n // precedence registry - features register via token(), others can read\n prec = {},\n\n // create operator checker/mapper - for symbols and special cases\n // For prefix word operators, prefer keyword() from block.js\n token = (\n op,\n p = SPACE,\n map,\n c = op.charCodeAt(0),\n l = op.length,\n prev = lookup[c],\n word = op.toUpperCase() !== op,\n matched, r\n ) => (p = prec[op] = !prev && prec[op] || p, lookup[c] = (a, curPrec, curOp, from = idx) =>\n (matched = curOp,\n (curOp ?\n op == curOp :\n (l < 2 || (op.charCodeAt(1) === cur.charCodeAt(idx + 1) && (l < 3 || cur.substr(idx, l) == op))) && (!word || !parse.id(cur.charCodeAt(idx + l))) && (matched = curOp = op)\n ) &&\n curPrec < p &&\n (idx += l, (r = map(a)) ? loc(r, from) : (idx = from, matched = 0, !word && !prev && err()), r)\n ) ||\n prev?.(a, curPrec, matched)),\n\n binary = (op, p, right = false) => token(op, p, a => a && (b => b && [op, a, b])(expr(p - (right ? .5 : 0)))),\n\n unary = (op, p, post) => token(op, p, a => post ? (a && [op, a]) : (!a && (a = expr(p - .5)) && [op, a])),\n\n literal = (op, val) => token(op, 200, a => !a && [, val]),\n\n nary = (op, p, right) =>\n token(op, p,\n (a, b) => (\n b = expr(p - (right ? .5 : 0)),\n (\n (a?.[0] !== op) && (a = [op, a || null]),\n b?.[0] === op ? a.push(...b.slice(1)) : a.push(b || null),\n a\n ))\n )\n ,\n\n group = (op, p) => token(op[0], p, a => (!a && [op, expr(0, op.charCodeAt(1)) || null])),\n\n access = (op, p) => token(op[0], p, a => (a && [op, a, expr(0, op.charCodeAt(1)) || null]));\n\n// === Compile: AST \u2192 Evaluator ===\n\n// Operator registry\nexport const operators = {};\n\n// Register an operator (chainable for overrides)\nexport const operator = (op, fn, prev = operators[op]) =>\n (operators[op] = (...args) => fn(...args) || prev?.(...args));\n\n// Compile AST to evaluator function\n// Note: [, value] serializes to [null, value] in JSON, both forms accepted\nexport const compile = node => (\n !Array.isArray(node) ? (node === undefined ? () => undefined : ctx => ctx?.[node]) :\n node[0] == null ? (v => () => v)(node[1]) : // == catches both undefined and null\n operators[node[0]]?.(...node.slice(1)) ?? err(`Unknown operator: ${node[0]}`, node?.loc)\n);\n\nexport default parse;\n", "/**\n * Numbers with configurable prefix notation\n *\n * Configurable via parse.number: { '0x': 16, '0b': 2, '0o': 8 }\n */\nimport { parse, lookup, next, err, skip, idx, cur } from '../parse.js';\n\nconst PERIOD = 46, _0 = 48, _9 = 57, _E = 69, _e = 101, PLUS = 43, MINUS = 45, UNDERSCORE = 95, _n = 110;\nconst _a = 97, _f = 102, _A = 65, _F = 70;\n\n// Strip underscores only if present (avoid allocation for common case)\nconst strip = s => s.indexOf('_') < 0 ? s : s.replaceAll('_', '');\n\n// Decimal number - check for .. range operator (don't consume . if followed by .)\n// Supports numeric separators: 1_000_000 and BigInt suffix: 123n\nconst num = a => {\n let str = strip(next(c =>\n // . is decimal only if NOT followed by another . (range operator)\n (c === PERIOD && cur.charCodeAt(idx + 1) !== PERIOD) ||\n (c >= _0 && c <= _9) ||\n c === UNDERSCORE ||\n ((c === _E || c === _e) && ((c = cur.charCodeAt(idx + 1)) >= _0 && c <= _9 || c === PLUS || c === MINUS) ? 2 : 0)\n ));\n // BigInt suffix\n if (cur.charCodeAt(idx) === _n) { skip(); return [, BigInt(str)]; }\n return (a = +str) != a ? err() : [, a];\n};\n\n// Char test for prefix base (with underscore support)\nconst charTest = {\n 2: c => c === 48 || c === 49 || c === UNDERSCORE,\n 8: c => (c >= 48 && c <= 55) || c === UNDERSCORE,\n 16: c => (c >= _0 && c <= _9) || (c >= _a && c <= _f) || (c >= _A && c <= _F) || c === UNDERSCORE\n};\n\n// Default: no prefixes\nparse.number = null;\n\n// .1 (but not .. range)\nlookup[PERIOD] = a => !a && cur.charCodeAt(idx + 1) !== PERIOD && num();\n\n// 0-9: check parse.number for prefix config\nfor (let i = _0; i <= _9; i++) lookup[i] = a => a ? void 0 : num();\nlookup[_0] = a => {\n if (a) return;\n const cfg = parse.number;\n if (cfg) {\n for (const [pre, base] of Object.entries(cfg)) {\n if (pre[0] === '0' && cur[idx + 1]?.toLowerCase() === pre[1]) {\n skip(2);\n return [, parseInt(strip(next(charTest[base])), base)];\n }\n }\n }\n return num();\n};\n", "/**\n * Strings with escape sequences\n *\n * Configurable via parse.string: { '\"': true } or { '\"': true, \"'\": true }\n */\nimport { parse, lookup, next, err, skip, idx, cur } from '../parse.js';\n\nconst BSLASH = 92, DQUOTE = 34, SQUOTE = 39;\nconst esc = { n: '\\n', r: '\\r', t: '\\t', b: '\\b', f: '\\f', v: '\\v' };\n\n// Parse string with given quote char code\nconst parseString = q => (a, _, s = '') => {\n if (a || !parse.string?.[String.fromCharCode(q)]) return;\n skip();\n next(c => c - q && (c === BSLASH ? (s += esc[cur[idx + 1]] || cur[idx + 1], 2) : (s += cur[idx], 1)));\n cur[idx] === String.fromCharCode(q) ? skip() : err('Bad string');\n return [, s];\n};\n\n// Register both quote chars (enabled via parse.string config)\nlookup[DQUOTE] = parseString(DQUOTE);\nlookup[SQUOTE] = parseString(SQUOTE);\n\n// Default: double quotes only\nparse.string = { '\"': true };\n\nexport { esc };\n", "/**\n * Assignment operators (C-family)\n *\n * = += -= *= /= %= |= &= ^= >>= <<=\n * Note: **= is in pow.js, >>>= ||= &&= ??= are JS-specific (in assignment-js.js)\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst ASSIGN = 20;\n\n// Register all assignment operators\n'= += -= *= /= %= |= &= ^= >>= <<='.split(' ').map(op => binary(op, ASSIGN, true));\n\n// Simple assign helper for x, a.b, a[b], (x)\nconst assign = (a, fn, obj, key) =>\n typeof a === 'string' ? ctx => fn(ctx, a, ctx) :\n a[0] === '.' ? (obj = compile(a[1]), key = a[2], ctx => fn(obj(ctx), key, ctx)) :\n a[0] === '[]' && a.length === 3 ? (obj = compile(a[1]), key = compile(a[2]), ctx => fn(obj(ctx), key(ctx), ctx)) :\n a[0] === '()' && a.length === 2 ? assign(a[1], fn) :\n (() => { throw Error('Invalid assignment target') })();\n\n// Compile - use Function to generate operator implementations\nconst ops = { '=': (o,k,v)=>o[k]=v, '+=': (o,k,v)=>o[k]+=v, '-=': (o,k,v)=>o[k]-=v, '*=': (o,k,v)=>o[k]*=v,\n '/=': (o,k,v)=>o[k]/=v, '%=': (o,k,v)=>o[k]%=v, '|=': (o,k,v)=>o[k]|=v, '&=': (o,k,v)=>o[k]&=v,\n '^=': (o,k,v)=>o[k]^=v, '>>=': (o,k,v)=>o[k]>>=v, '<<=': (o,k,v)=>o[k]<<=v };\nfor (const op in ops) operator(op, (a, b) => (b = compile(b), assign(a, (o, k, ctx) => ops[op](o, k, b(ctx)))));\n", "/**\n * Logical operators (base)\n *\n * ! && ||\n * For ?? see nullish.js\n */\nimport { binary, unary, operator, compile } from '../../parse.js';\n\nconst LOR = 30, LAND = 40, PREFIX = 140;\n\n// ! must be registered before != and !==\nbinary('!', PREFIX);\nunary('!', PREFIX);\n\nbinary('||', LOR);\nbinary('&&', LAND);\n\n// Compile\noperator('!', a => (a = compile(a), ctx => !a(ctx)));\noperator('||', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) || b(ctx)));\noperator('&&', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) && b(ctx)));\n", "/**\n * Bitwise operators (C-family)\n *\n * | & ^ ~ >> <<\n * Note: >>> is JS-specific (in bitwise-js.js)\n */\nimport { binary, unary, operator, compile } from '../../parse.js';\n\nconst OR = 50, XOR = 60, AND = 70, SHIFT = 100, PREFIX = 140;\n\n// Base operators first (tried last in chain)\nbinary('|', OR);\nbinary('&', AND);\nbinary('^', XOR);\n\n// Shifts (after < >)\nbinary('>>', SHIFT);\nbinary('<<', SHIFT);\n\n// Unary\nunary('~', PREFIX);\n\n// Compile\noperator('~', a => (a = compile(a), ctx => ~a(ctx)));\noperator('|', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) | b(ctx)));\noperator('&', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) & b(ctx)));\noperator('^', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) ^ b(ctx)));\noperator('>>', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) >> b(ctx)));\noperator('<<', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) << b(ctx)));\n", "/**\n * Comparison operators\n *\n * < > <= >=\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst COMP = 90;\n\nbinary('<', COMP);\nbinary('>', COMP);\nbinary('<=', COMP);\nbinary('>=', COMP);\n\n// Compile\noperator('>', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) > b(ctx)));\noperator('<', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) < b(ctx)));\noperator('>=', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) >= b(ctx)));\noperator('<=', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) <= b(ctx)));\n", "/**\n * Equality operators (base)\n *\n * == !=\n * For === !== see equality-strict.js\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst EQ = 80;\n\nbinary('==', EQ);\nbinary('!=', EQ);\n\n// Compile\noperator('==', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) == b(ctx)));\noperator('!=', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) != b(ctx)));\n", "/**\n * Arithmetic operators\n *\n * + - * / %\n * Unary: + -\n */\nimport { binary, unary, operator, compile } from '../../parse.js';\n\nconst ADD = 110, MULT = 120, PREFIX = 140;\n\nbinary('+', ADD);\nbinary('-', ADD);\nbinary('*', MULT);\nbinary('/', MULT);\nbinary('%', MULT);\n\nunary('+', PREFIX);\nunary('-', PREFIX);\n\n// Compile\noperator('+', (a, b) => b !== undefined ?\n (a = compile(a), b = compile(b), ctx => a(ctx) + b(ctx)) :\n (a = compile(a), ctx => +a(ctx)));\noperator('-', (a, b) => b !== undefined ?\n (a = compile(a), b = compile(b), ctx => a(ctx) - b(ctx)) :\n (a = compile(a), ctx => -a(ctx)));\noperator('*', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) * b(ctx)));\noperator('/', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) / b(ctx)));\noperator('%', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) % b(ctx)));\n", "/**\n * Increment/decrement operators\n *\n * ++ -- (prefix and postfix)\n */\nimport { token, expr, operator, compile } from '../../parse.js';\n\nconst POSTFIX = 150;\n\ntoken('++', POSTFIX, a => a ? ['++', a, null] : ['++', expr(POSTFIX - 1)]);\ntoken('--', POSTFIX, a => a ? ['--', a, null] : ['--', expr(POSTFIX - 1)]);\n\n// Compile (b=null means postfix, b=undefined means prefix)\n// Simple prop helper for increment - handles x, a.b, a[b], (x)\nconst inc = (a, fn, obj, key) =>\n typeof a === 'string' ? ctx => fn(ctx, a) :\n a[0] === '.' ? (obj = compile(a[1]), key = a[2], ctx => fn(obj(ctx), key)) :\n a[0] === '[]' && a.length === 3 ? (obj = compile(a[1]), key = compile(a[2]), ctx => fn(obj(ctx), key(ctx))) :\n a[0] === '()' && a.length === 2 ? inc(a[1], fn) : // unwrap parens: (x)++\n (() => { throw Error('Invalid increment target') })();\n\noperator('++', (a, b) => inc(a, b === null ? (o, k) => o[k]++ : (o, k) => ++o[k]));\noperator('--', (a, b) => inc(a, b === null ? (o, k) => o[k]-- : (o, k) => --o[k]));\n", "import { nary, group, operator, compile } from '../parse.js';\n\nconst STATEMENT = 5, SEQ = 10, ACCESS = 170;\n\n// (a,b,c), (a) \u2014 uses ACCESS to avoid conflict with ?.\ngroup('()', ACCESS);\n\n// Sequences\nnary(',', SEQ);\nnary(';', STATEMENT, true); // right-assoc to allow same-prec statements\n\n// Compile sequences - returns last evaluated value\nconst seq = (...args) => (args = args.map(compile), ctx => { let r; for (const a of args) r = a(ctx); return r; });\noperator(',', seq);\noperator(';', seq);\n", "/**\n * Property access: a.b, a[b], a(b), [1,2,3]\n * For private fields (#x), see class.js\n */\nimport { access, binary, operator, compile } from '../parse.js';\n\n// Block prototype chain attacks\nexport const unsafe = k => k?.[0] === '_' && k[1] === '_' || k === 'constructor' || k === 'prototype';\n\nconst ACCESS = 170;\n\n// a[b]\naccess('[]', ACCESS);\n\n// a.b\nbinary('.', ACCESS);\n\n// a(b,c,d), a()\naccess('()', ACCESS);\n\n// Compile\nconst err = msg => { throw Error(msg) };\noperator('[]', (a, b) => {\n // Array literal: [1,2,3] - b is strictly undefined (AST length 2)\n if (b === undefined) {\n a = !a ? [] : a[0] === ',' ? a.slice(1) : [a];\n a = a.map(a => a == null ? (() => undefined) : a[0] === '...' ? (a = compile(a[1]), ctx => a(ctx)) : (a = compile(a), ctx => [a(ctx)]));\n return ctx => a.flatMap(a => a(ctx));\n }\n // Member access: a[b]\n if (b == null) err('Missing index');\n a = compile(a); b = compile(b);\n return ctx => { const k = b(ctx); return unsafe(k) ? undefined : a(ctx)[k]; };\n});\noperator('.', (a, b) => (a = compile(a), b = !b[0] ? b[1] : b, unsafe(b) ? () => undefined : ctx => a(ctx)[b]));\noperator('()', (a, b) => {\n // Group: (expr) - no second argument means grouping, not call\n if (b === undefined) return a == null ? err('Empty ()') : compile(a);\n // Validate: no sparse arguments in calls\n const hasSparse = n => n?.[0] === ',' && n.slice(1).some(a => a == null || hasSparse(a));\n if (hasSparse(b)) err('Empty argument');\n const args = !b ? () => [] :\n b[0] === ',' ? (b = b.slice(1).map(compile), ctx => b.map(arg => arg(ctx))) :\n (b = compile(b), ctx => [b(ctx)]);\n // Inline call handling for x(), a.b(), a[b](), (x)()\n return call(a, (obj, path, ctx) => obj[path](...args(ctx)));\n});\n\n// Left-value check (valid assignment target)\nexport const isLval = n =>\n typeof n === 'string' ||\n (Array.isArray(n) && (\n n[0] === '.' || n[0] === '?.' ||\n (n[0] === '[]' && n.length === 3) || n[0] === '?.[]' ||\n (n[0] === '()' && n.length === 2 && isLval(n[1])) ||\n n[0] === '{}'\n ));\n\n// Simple call helper (no optional chaining) - handles x(), a.b(), a[b](), (x)()\nconst call = (a, fn, obj, path) => (\n a == null ? err('Empty ()') :\n a[0] === '()' && a.length == 2 ? call(a[1], fn) :\n typeof a === 'string' ? ctx => fn(ctx, a, ctx) :\n a[0] === '.' ? (obj = compile(a[1]), path = a[2], ctx => fn(obj(ctx), path, ctx)) :\n a[0] === '?.' ? (obj = compile(a[1]), path = a[2], ctx => { const o = obj(ctx); return o == null ? undefined : fn(o, path, ctx); }) :\n a[0] === '[]' && a.length === 3 ? (obj = compile(a[1]), path = compile(a[2]), ctx => fn(obj(ctx), path(ctx), ctx)) :\n a[0] === '?.[]' ? (obj = compile(a[1]), path = compile(a[2]), ctx => { const o = obj(ctx); return o == null ? undefined : fn(o, path(ctx), ctx); }) :\n (a = compile(a), ctx => fn([a(ctx)], 0, ctx))\n);\n\n// Export as prop for backward compatibility with other features\nexport const prop = call;\n", "/**\n * subscript: Minimal expression parser + compiler\n *\n * Usage:\n * subscript`a + b`(ctx) - template tag, returns compiled evaluator\n * subscript`a + ${x}`(ctx) - interpolations: primitives, objects, AST nodes\n * subscript('a + b')(ctx) - direct call (no caching)\n *\n * For more features:\n * import { parse, compile } from 'subscript/justin.js' // + JSON, arrows, templates\n * import { parse, compile } from 'subscript/jessie.js' // + statements, functions\n */\n\n// Expression features\nimport './feature/number.js'; // Decimal numbers: 123, 1.5, 1e3\nimport './feature/string.js'; // Double-quoted strings with escapes\n\n// Operators (C-family common set) - order matters for token chain performance\nimport './feature/op/assignment.js'; // = += -= *= /= %= |= &= ^= >>= <<=\nimport './feature/op/logical.js'; // ! && ||\nimport './feature/op/bitwise.js'; // ~ | & ^ >> <<\nimport './feature/op/comparison.js'; // < > <= >=\nimport './feature/op/equality.js'; // == !=\nimport './feature/op/arithmetic.js'; // + - * / %\nimport './feature/op/increment.js'; // ++ --\n\nimport './feature/group.js'; // Grouping: (a), sequences: a, b; a; b\nimport './feature/access.js'; // Property access: a.b, a[b], f(), [a,b]\n\nimport { parse, compile } from './parse.js';\nexport * from './parse.js';\n\n// Cache for compiled templates (keyed by template strings array reference)\nconst cache = new WeakMap();\n\n// Template tag: subscript`a + b` or subscript`a + ${x}`\nconst subscript = (strings, ...values) =>\n // Direct call subscript('code') - strings is just a string\n typeof strings === 'string' ? compile(parse(strings)) :\n // Template literal - use cache\n cache.get(strings) || cache.set(strings, compileTemplate(strings, values)).get(strings);\n\n// Compile template with placeholders (using Private Use Area chars)\nconst PUA = 0xE000;\nconst compileTemplate = (strings, values) => {\n const code = strings.reduce((acc, s, i) => acc + (i ? String.fromCharCode(PUA + i - 1) : '') + s, '');\n const ast = parse(code);\n const inject = node => {\n if (typeof node === 'string' && node.length === 1) {\n let i = node.charCodeAt(0) - PUA, v;\n if (i >= 0 && i < values.length) return v = values[i], isAST(v) ? v : [, v];\n }\n return Array.isArray(node) ? node.map(inject) : node;\n };\n return compile(inject(ast));\n};\n\n// Detect AST node vs regular value\n// AST: string (identifier), or array with string/undefined first element\nconst isAST = v =>\n typeof v === 'string' ||\n (Array.isArray(v) && (typeof v[0] === 'string' || v[0] === undefined));\n\nexport default subscript;\n", "/** Configurable comments via parse.comment = { start: end } */\nimport { parse, cur, idx, seek } from '../parse.js';\n\nconst SPACE = 32, space = parse.space;\n\n// Default C-style comments\nparse.comment ??= { '//': '\\n', '/*': '*/' };\n\n// Cached array: [[start, end, firstCharCode], ...]\nlet comments;\n\nparse.space = () => {\n if (!comments) comments = Object.entries(parse.comment).map(([s, e]) => [s, e, s.charCodeAt(0)]);\n for (var cc; (cc = space()); ) {\n for (var j = 0, c; c = comments[j++]; ) {\n if (cc === c[2] && cur.substr(idx, c[0].length) === c[0]) {\n var i = idx + c[0].length;\n if (c[1] === '\\n') while (cur.charCodeAt(i) >= SPACE) i++;\n else { while (cur[i] && cur.substr(i, c[1].length) !== c[1]) i++; if (cur[i]) i += c[1].length; }\n seek(i); cc = 0; break;\n }\n }\n if (cc) return cc;\n }\n return cc;\n};\n", "/**\n * Identity operators\n *\n * === !==\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst EQ = 80;\n\nbinary('===', EQ);\nbinary('!==', EQ);\n\n// Compile\noperator('===', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) === b(ctx)));\noperator('!==', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) !== b(ctx)));\n", "/**\n * Nullish coalescing operator (JS-specific)\n *\n * ??\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst LOR = 30;\n\nbinary('??', LOR);\n\n// Compile\noperator('??', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) ?? b(ctx)));\n", "/**\n * Exponentiation operator\n *\n * ** **=\n *\n * ES2016+, not in classic JS/C\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { isLval, prop } from '../access.js';\n\nconst EXP = 130, ASSIGN = 20;\n\nbinary('**', EXP, true);\nbinary('**=', ASSIGN, true);\n\n// Compile\noperator('**', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) ** b(ctx)));\nconst err = msg => { throw Error(msg) };\noperator('**=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (obj, path, ctx) => obj[path] **= b(ctx))));\n", "/**\n * Membership operator\n *\n * in: key in object\n * of: for-of iteration (parsed as binary in for head)\n *\n * Note: instanceof is in class.js (jessie feature)\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst COMP = 90;\n\nbinary('in', COMP);\nbinary('of', COMP);\n\n// Compile\noperator('in', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) in b(ctx)));\n", "/**\n * Unsigned right shift operators\n *\n * >>> >>>=\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { isLval, prop } from '../access.js';\n\nconst ASSIGN = 20, SHIFT = 100;\nconst err = msg => { throw Error(msg) };\n\nbinary('>>>', SHIFT);\nbinary('>>>=', ASSIGN, true);\n\n// Compile\noperator('>>>', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) >>> b(ctx)));\noperator('>>>=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] >>>= b(ctx))));\n", "/**\n * Destructuring patterns and binding\n *\n * Handles: [a, b] = arr, {x, y} = obj, [a, ...rest] = arr, {x = default} = obj\n */\nimport { compile } from '../parse.js';\n\n// Flatten comma into array: [',', a, b, c] \u2192 [a, b, c]\nconst flatten = items => items[0]?.[0] === ',' ? items[0].slice(1) : items;\n\n// Destructure value into context\nexport const destructure = (pattern, value, ctx) => {\n if (typeof pattern === 'string') { ctx[pattern] = value; return; }\n const [op, ...raw] = pattern;\n const items = flatten(raw);\n if (op === '{}') {\n const used = [];\n for (const item of items) {\n // Rest: {...rest}\n if (Array.isArray(item) && item[0] === '...') {\n const rest = {};\n for (const k in value) if (!used.includes(k)) rest[k] = value[k];\n ctx[item[1]] = rest;\n break;\n }\n let key, binding, def;\n // Shorthand: {x} \u2192 item is 'x'\n // With default: {x = 1} \u2192 ['=', 'x', default]\n // Rename: {x: y} \u2192 [':', 'x', 'y']\n if (typeof item === 'string') { key = binding = item }\n else if (item[0] === '=') { typeof item[1] === 'string' ? (key = binding = item[1]) : ([, key, binding] = item[1]); def = item[2] }\n else { [, key, binding] = item }\n used.push(key);\n let val = value[key];\n if (val === undefined && def) val = compile(def)(ctx);\n destructure(binding, val, ctx);\n }\n }\n else if (op === '[]') {\n let i = 0;\n for (const item of items) {\n if (item === null) { i++; continue; }\n if (Array.isArray(item) && item[0] === '...') { ctx[item[1]] = value.slice(i); break; }\n let binding = item, def;\n if (Array.isArray(item) && item[0] === '=') [, binding, def] = item;\n let val = value[i++];\n if (val === undefined && def) val = compile(def)(ctx);\n destructure(binding, val, ctx);\n }\n }\n};\n", "/**\n * Logical/nullish assignment operators + destructuring\n *\n * ||= &&= ??= + destructuring support for let/const/var\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { destructure } from '../destruct.js';\nimport { isLval, prop } from '../access.js';\n\nconst ASSIGN = 20;\nconst err = msg => { throw Error(msg) };\n\nbinary('||=', ASSIGN, true);\nbinary('&&=', ASSIGN, true);\nbinary('??=', ASSIGN, true);\n\n// Override = to support destructuring\noperator('=', (a, b) => {\n // Handle let/const/var declarations: ['=', ['let', pattern], value]\n if (Array.isArray(a) && (a[0] === 'let' || a[0] === 'const' || a[0] === 'var')) {\n const pattern = a[1];\n b = compile(b);\n if (typeof pattern === 'string') return ctx => { ctx[pattern] = b(ctx); };\n return ctx => destructure(pattern, b(ctx), ctx);\n }\n isLval(a) || err('Invalid assignment target');\n return (b = compile(b), prop(a, (obj, path, ctx) => obj[path] = b(ctx)));\n});\n\n// Compile\noperator('||=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] ||= b(ctx))));\noperator('&&=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] &&= b(ctx))));\noperator('??=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] ??= b(ctx))));\n", "// Block parsing helpers\nimport { expr, skip, space, lookup, err, parse, seek, cur, idx, parens, loc, operator, compile, peek } from '../parse.js';\n\nconst STATEMENT = 5, OBRACE = 123, CBRACE = 125;\n\n// keyword(op, prec, fn) - prefix-only word token with object property support\n// keyword('while', 6, () => ['while', parens(), body()])\n// keyword('break', 6, () => ['break'])\n// Allows property names: {while:1} won't match keyword, falls back to identifier\nexport const keyword = (op, prec, map, c = op.charCodeAt(0), l = op.length, prev = lookup[c], r) =>\n lookup[c] = (a, curPrec, curOp, from = idx) =>\n !a &&\n (curOp ? op == curOp : (l < 2 || cur.substr(idx, l) == op) && (curOp = op)) &&\n curPrec < prec &&\n !parse.id(cur.charCodeAt(idx + l)) &&\n peek(idx + l) !== 58 && // allow {keyword:value}\n (seek(idx + l), (r = map()) ? loc(r, from) : seek(from), r) ||\n prev?.(a, curPrec, curOp);\n\n// infix(op, prec, fn) - infix word token (requires left operand)\n// infix('catch', 6, a => ['catch', a, parens(), block()])\n// infix('finally', 6, a => ['finally', a, block()])\n// attaches .loc to array results for source mapping\nexport const infix = (op, prec, map, c = op.charCodeAt(0), l = op.length, prev = lookup[c], r) =>\n lookup[c] = (a, curPrec, curOp, from = idx) =>\n a &&\n (curOp ? op == curOp : (l < 2 || cur.substr(idx, l) == op) && (curOp = op)) &&\n curPrec < prec &&\n !parse.id(cur.charCodeAt(idx + l)) &&\n (seek(idx + l), loc(r = map(a), from), r) ||\n prev?.(a, curPrec, curOp);\n\n// block() - parse required { body }\nexport const block = () =>\n (space() === OBRACE || err('Expected {'), skip(), expr(STATEMENT - .5, CBRACE) || null);\n\n// body() - parse { body } or single statement\nexport const body = () =>\n space() !== OBRACE ? expr(STATEMENT + .5) : (skip(), expr(STATEMENT - .5, CBRACE) || null);\n", "/**\n * Literal values\n *\n * true, false, null, undefined, NaN, Infinity\n *\n * Note: undefined uses [] (empty array) for JSON round-trip compatibility.\n * [, undefined] serializes to [null, null] which would compile to null.\n * [] serializes to [] and compiles back to undefined.\n */\nimport { literal } from '../parse.js';\nimport { keyword } from './block.js';\n\nliteral('true', true);\nliteral('false', false);\nliteral('null', null);\nkeyword('undefined', 200, () => []); // [] for JSON compatibility\nliteral('NaN', NaN);\nliteral('Infinity', Infinity);\n", "/**\n * Ternary conditional operator\n *\n * a ? b : c \u2192 conditional expression\n *\n * Common in: C, JS, Java, PHP, etc.\n */\nimport { token, expr, next, operator, compile } from '../../parse.js';\n\nconst ASSIGN = 20;\n\ntoken('?', ASSIGN, (a, b, c) => a && (b = expr(ASSIGN - 1)) && next(c => c === 58) && (c = expr(ASSIGN - 1), ['?', a, b, c]));\n\n// Compile\noperator('?', (a, b, c) => (a = compile(a), b = compile(b), c = compile(c), ctx => a(ctx) ? b(ctx) : c(ctx)));\n", "// Control flow symbols (shared by loop, group, switch, try, function)\n// RETURN is array to hold value - reused, no allocation per throw\nexport const BREAK = Symbol('break'), CONTINUE = Symbol('continue'), RETURN = [];\n", "/**\n * Arrow function operator\n *\n * (a, b) => expr \u2192 arrow function\n *\n * Common in: JS, TS, Java, C#, Kotlin, Scala\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { RETURN } from '../control.js';\n\nconst ASSIGN = 20;\n\nbinary('=>', ASSIGN, true);\n\n// Compile\noperator('=>', (a, b) => {\n // Normalize params: () \u2192 [], x \u2192 [x], (a, b) \u2192 [a, b]\n a = a?.[0] === '()' ? a[1] : a;\n const ps = !a ? [] : a[0] === ',' ? a.slice(1) : [a];\n // Check for rest param\n let restIdx = -1, restName = null;\n const last = ps[ps.length - 1];\n if (Array.isArray(last) && last[0] === '...') {\n restIdx = ps.length - 1;\n restName = last[1];\n ps.length--;\n }\n // Arrow body: {} is always block (need parens for object: ({...}))\n // Block body returns undefined unless explicit return\n const isBlock = b?.[0] === '{}';\n b = compile(isBlock ? ['{', b[1]] : b);\n return ctx => (...args) => {\n const l = {};\n ps.forEach((p, i) => l[p] = args[i]);\n if (restName) l[restName] = args.slice(restIdx);\n const fnCtx = new Proxy(l, {\n get: (l, k) => k in l ? l[k] : ctx?.[k],\n set: (l, k, v) => ((k in l ? l : ctx)[k] = v, true),\n has: (l, k) => k in l || (ctx ? k in ctx : false)\n });\n try { const r = b(fnCtx); return isBlock ? undefined : r; }\n catch (e) { if (e === RETURN) return e[0]; throw e; }\n };\n});\n", "/**\n * Spread/rest operator\n *\n * ...x \u2192 spread in arrays/calls, rest in params\n *\n * Common in: JS, TS, Python (*args), Ruby (*splat)\n */\nimport { unary, operator, compile } from '../../parse.js';\n\nconst PREFIX = 140;\n\nunary('...', PREFIX);\n\n// Compile (for arrays/objects spread)\noperator('...', a => (a = compile(a), ctx => Object.entries(a(ctx))));\n", "/**\n * Optional chaining operators\n *\n * a?.b \u2192 optional member access\n * a?.[x] \u2192 optional computed access\n * a?.() \u2192 optional call\n *\n * Common in: JS, TS, Swift, Kotlin, C#\n */\nimport { token, expr, skip, space, operator, compile } from '../../parse.js';\nimport { unsafe } from '../access.js';\n\nconst ACCESS = 170;\n\ntoken('?.', ACCESS, (a, b) => {\n if (!a) return;\n const cc = space();\n // Optional call: a?.()\n if (cc === 40) { skip(); return ['?.()', a, expr(0, 41) || null]; }\n // Optional computed: a?.[x]\n if (cc === 91) { skip(); return ['?.[]', a, expr(0, 93)]; }\n // Optional member: a?.b\n b = expr(ACCESS);\n return b ? ['?.', a, b] : void 0;\n});\n\n// Compile\noperator('?.', (a, b) => (a = compile(a), unsafe(b) ? () => undefined : ctx => a(ctx)?.[b]));\noperator('?.[]', (a, b) => (a = compile(a), b = compile(b), ctx => { const k = b(ctx); return unsafe(k) ? undefined : a(ctx)?.[k]; }));\noperator('?.()', (a, b) => {\n const args = !b ? () => [] :\n b[0] === ',' ? (b = b.slice(1).map(compile), ctx => b.map(arg => arg(ctx))) :\n (b = compile(b), ctx => [b(ctx)]);\n\n // Handle nested optional chain: a?.method?.() or a?.[\"method\"]?.()\n if (a[0] === '?.') {\n const container = compile(a[1]);\n const prop = a[2];\n return unsafe(prop) ? () => undefined :\n ctx => { const c = container(ctx); return c?.[prop]?.(...args(ctx)); };\n }\n if (a[0] === '?.[]') {\n const container = compile(a[1]);\n const prop = compile(a[2]);\n return ctx => { const c = container(ctx); const p = prop(ctx); return unsafe(p) ? undefined : c?.[p]?.(...args(ctx)); };\n }\n // Handle a?.() where a is a.method or a[method] - need to bind this\n if (a[0] === '.') {\n const obj = compile(a[1]);\n const prop = a[2];\n return unsafe(prop) ? () => undefined :\n ctx => { const o = obj(ctx); return o?.[prop]?.(...args(ctx)); };\n }\n if (a[0] === '[]' && a.length === 3) {\n const obj = compile(a[1]);\n const prop = compile(a[2]);\n return ctx => { const o = obj(ctx); const p = prop(ctx); return unsafe(p) ? undefined : o?.[p]?.(...args(ctx)); };\n }\n const fn = compile(a);\n return ctx => fn(ctx)?.(...args(ctx));\n});\n", "/**\n * Unary keyword operators\n *\n * typeof x \u2192 type string\n * void x \u2192 undefined\n * delete x \u2192 remove property\n * new X() \u2192 construct instance\n *\n * JS-specific keywords\n */\nimport { unary, operator, compile, skip, expr, word } from '../../parse.js';\nimport { keyword } from '../block.js';\n\nconst PREFIX = 140;\n\nunary('typeof', PREFIX);\nunary('void', PREFIX);\nunary('delete', PREFIX);\n// new X() or new.target\nkeyword('new', PREFIX, () =>\n word('.target') ? (skip(7), ['new.target']) : ['new', expr(PREFIX)]\n);\n\n// Compile\noperator('typeof', a => (a = compile(a), ctx => typeof a(ctx)));\noperator('void', a => (a = compile(a), ctx => (a(ctx), undefined)));\noperator('delete', a => {\n if (a[0] === '.') {\n const obj = compile(a[1]), key = a[2];\n return ctx => delete obj(ctx)[key];\n }\n if (a[0] === '[]') {\n const obj = compile(a[1]), key = compile(a[2]);\n return ctx => delete obj(ctx)[key(ctx)];\n }\n return () => true;\n});\noperator('new', (call) => {\n const target = compile(call?.[0] === '()' ? call[1] : call);\n const args = call?.[0] === '()' ? call[2] : null;\n const argList = !args ? () => [] :\n args[0] === ',' ? (a => ctx => a.map(f => f(ctx)))(args.slice(1).map(compile)) :\n (a => ctx => [a(ctx)])(compile(args));\n return ctx => new (target(ctx))(...argList(ctx));\n});\n", "/**\n * Object accessor properties (getters/setters)\n *\n * AST:\n * { get x() { body } } \u2192 ['{}', ['get', 'x', body]]\n * { set x(v) { body } } \u2192 ['{}', ['set', 'x', 'v', body]]\n */\nimport { token, expr, skip, space, next, parse, cur, idx, operator, compile } from '../parse.js';\n\n// Accessor marker for object property definitions\nexport const ACC = Symbol('accessor');\n\nconst ASSIGN = 20;\nconst OPAREN = 40, CPAREN = 41, OBRACE = 123, CBRACE = 125;\n\n// Shared parser for get/set \u2014 returns false if not valid accessor pattern (falls through to identifier)\n// Returns false (not undefined) to signal \"fall through without setting reserved\"\nconst accessor = (kind) => a => {\n if (a) return; // not prefix\n space();\n const name = next(parse.id);\n if (!name) return false; // no property name = not accessor (e.g. `{ get: 1 }`)\n space();\n if (cur.charCodeAt(idx) !== OPAREN) return false; // not followed by ( = not accessor\n skip();\n const params = expr(0, CPAREN);\n space();\n if (cur.charCodeAt(idx) !== OBRACE) return false;\n skip();\n return [kind, name, params, expr(0, CBRACE)];\n};\n\ntoken('get', ASSIGN - 1, accessor('get'));\ntoken('set', ASSIGN - 1, accessor('set'));\n\n// Method shorthand: { foo() {} } \u2192 [':', 'foo', ['=>', ['()', params], body]]\n// Uses token() infix handler - returns undefined to fall through to function call\ntoken('(', ASSIGN - 1, a => {\n // Only handle infix position with plain identifier in low-precedence context (object literal)\n if (!a || typeof a !== 'string') return;\n const params = expr(0, CPAREN) || null;\n space();\n // Not followed by { - not method shorthand, fall through\n if (cur.charCodeAt(idx) !== OBRACE) return;\n skip();\n return [':', a, ['=>', ['()', params], expr(0, CBRACE) || null]];\n});\n\n// Compile\noperator('get', (name, body) => {\n body = body ? compile(body) : () => {};\n return ctx => [[ACC, name, {\n get: function() { const s = Object.create(ctx || {}); s.this = this; return body(s); }\n }]];\n});\n\noperator('set', (name, param, body) => {\n body = body ? compile(body) : () => {};\n return ctx => [[ACC, name, {\n set: function(v) { const s = Object.create(ctx || {}); s.this = this; s[param] = v; body(s); }\n }]];\n});\n", "/**\n * Collection literals: arrays and objects (Justin feature)\n *\n * [a, b, c]\n * {a: 1, b: 2}\n * {a, b} (shorthand)\n *\n * Block vs object detection (jessie):\n * ['{}', [';', ...]] \u2192 ['{', body] block with statements\n * ['{}', ['let', ...]] \u2192 ['{', body] block with declaration\n * ['{}', null] \u2192 ['{}', null] empty object {}\n * ['{}', 'a'] \u2192 ['{}', 'a'] object shorthand {a}\n * ['{}', [':', k, v]] \u2192 ['{}', ...] object literal\n */\nimport { group, binary, operator, compile } from '../parse.js';\nimport { ACC } from './accessor.js';\n\nconst ASSIGN = 20, TOKEN = 200;\n\n// Object inner: null, string, or array starting with : , ... get set\nconst isObject = a => a == null || typeof a === 'string' || [':', ',', '...', 'get', 'set'].includes(a[0]);\n\n// [a,b,c]\ngroup('[]', TOKEN);\n\n// {a:1, b:2, c:3}\ngroup('{}', TOKEN);\n\n// a: b (colon operator for object properties)\nbinary(':', ASSIGN - 1, true);\n\n// Compile - detect block vs object\noperator('{}', (a, b) => {\n if (b !== undefined) return;\n // Block: not an object pattern\n if (!isObject(a)) return compile(['{', a]);\n // Object literal\n a = !a ? [] : a[0] !== ',' ? [a] : a.slice(1);\n const props = a.map(p => compile(typeof p === 'string' ? [':', p, p] : p));\n return ctx => {\n const obj = {}, acc = {};\n for (const e of props.flatMap(f => f(ctx))) {\n if (e[0] === ACC) {\n const [, n, desc] = e;\n acc[n] = { ...acc[n], ...desc, configurable: true, enumerable: true };\n } else obj[e[0]] = e[1];\n }\n for (const n in acc) Object.defineProperty(obj, n, acc[n]);\n return obj;\n };\n});\n\n// Block statement - creates scope\noperator('{', body => {\n body = body ? compile(body) : () => undefined;\n return ctx => body(Object.create(ctx));\n});\n\noperator(':', (a, b) => (b = compile(b), Array.isArray(a) ?\n (a = compile(a), ctx => [[a(ctx), b(ctx)]]) : ctx => [[a, b(ctx)]]));\n", "/**\n * Template literals: `a ${x} b` \u2192 ['`', [,'a '], 'x', [,' b']]\n * Tagged templates: tag`...` \u2192 ['``', 'tag', ...]\n */\nimport { parse, skip, err, expr, lookup, cur, idx, operator, compile } from '../parse.js';\n\nconst ACCESS = 170, BACKTICK = 96, DOLLAR = 36, OBRACE = 123, BSLASH = 92;\nconst esc = { n: '\\n', r: '\\r', t: '\\t', b: '\\b', f: '\\f', v: '\\v' };\n\n// Parse template body after opening `\nconst parseBody = () => {\n const parts = [];\n for (let s = '', c; (c = cur.charCodeAt(idx)) !== BACKTICK; )\n !c ? err('Unterminated template') :\n c === BSLASH ? (skip(), s += esc[cur[idx]] || cur[idx], skip()) :\n c === DOLLAR && cur.charCodeAt(idx + 1) === OBRACE ? (s && parts.push([, s]), s = '', skip(2), parts.push(expr(0, 125))) :\n (s += cur[idx], skip(), c = cur.charCodeAt(idx), c === BACKTICK && s && parts.push([, s]));\n return skip(), parts;\n};\n\nconst prev = lookup[BACKTICK];\n// Tagged templates: decline when ASI with newline (return undefined to let ASI handle)\nlookup[BACKTICK] = (a, prec) =>\n a && prec < ACCESS ? (parse.asi && parse.newline ? void 0 : (skip(), ['``', a, ...parseBody()])) : // tagged\n !a ? (skip(), (p => p.length < 2 && p[0]?.[0] === undefined ? p[0] || [,''] : ['`', ...p])(parseBody())) : // plain\n prev?.(a, prec);\n\n// Compile\noperator('`', (...parts) => (parts = parts.map(compile), ctx => parts.map(p => p(ctx)).join('')));\noperator('``', (tag, ...parts) => {\n tag = compile(tag);\n const strings = [], exprs = [];\n for (const p of parts) {\n if (Array.isArray(p) && p[0] === undefined) strings.push(p[1]);\n else exprs.push(compile(p));\n }\n const strs = Object.assign([...strings], { raw: strings });\n return ctx => tag(ctx)(strs, ...exprs.map(e => e(ctx)));\n});\n", "/**\n * justin: JSON superset expression language\n *\n * Builds on subscript with JS-specific features:\n * optional chaining, arrow functions, spread, templates.\n */\nimport './subscript.js';\nimport { parse } from './parse.js';\n\n// Add single quotes\nparse.string[\"'\"] = true;\n\n// Add hex, binary, octal prefixes\nparse.number = { '0x': 16, '0b': 2, '0o': 8 };\n\nimport './feature/comment.js';\n\n// Extended operators\n// Note: assignment (=) is in subscript, must come BEFORE identity (===)\nimport './feature/op/identity.js'; // === !==\nimport './feature/op/nullish.js'; // ??\nimport './feature/op/pow.js'; // ** **=\nimport './feature/op/membership.js'; // in (instanceof is in jessie/class.js)\nimport './feature/op/bitwise-unsigned.js'; // >>> >>>=\nimport './feature/op/assign-logical.js'; // ||= &&= ??= + destructuring\n\n// JS-specific operators (ternary, arrow, spread, optional chaining, typeof/void/delete/new)\nimport './feature/literal.js';\nimport './feature/op/ternary.js';\nimport './feature/op/arrow.js';\nimport './feature/op/spread.js';\nimport './feature/op/optional.js';\nimport './feature/op/unary.js';\n\nimport './feature/collection.js';\nimport './feature/template.js';\n\nexport * from './parse.js';\nexport { default } from './subscript.js';\n", "/**\n * Variable declarations: let, const, var\n *\n * AST:\n * let x = 1 \u2192 ['let', ['=', 'x', 1]]\n * let x = 1, y = 2 \u2192 ['let', ['=', 'x', 1], ['=', 'y', 2]]\n * const {a} = x \u2192 ['const', ['=', ['{}', 'a'], 'x']]\n * for (let x in o) \u2192 ['for', ['in', ['let', 'x'], 'o'], body]\n * var x \u2192 ['var', 'x'] (acts as assignment target)\n */\nimport { expr, space, operator, compile } from '../parse.js';\nimport { keyword } from './block.js';\nimport { destructure } from './destruct.js';\n\nconst STATEMENT = 5, SEQ = 10, ASSIGN = 20;\n\n// let/const: expr(SEQ-1) consumes assignment, stops before comma\n// For for-in/of, return ['in/of', ['let', x], iterable] not ['let', ['in', x, it]]\n// For comma, return ['let', decl1, decl2, ...] not ['let', [',', ...]]\nconst decl = keyword => {\n let node = expr(SEQ - 1);\n // for (let x in obj) - restructure so for-loop sees in/of at top\n if (node?.[0] === 'in' || node?.[0] === 'of')\n return [node[0], [keyword, node[1]], node[2]];\n // let x = 1, y = 2 - flatten comma into nary let\n if (node?.[0] === ',')\n return [keyword, ...node.slice(1)];\n return [keyword, node];\n};\n\nkeyword('let', STATEMENT + 1, () => decl('let'));\nkeyword('const', STATEMENT + 1, () => decl('const'));\n\n// var: just declares identifier, assignment happens separately\n// var x = 5 \u2192 ['=', ['var', 'x'], 5]\nkeyword('var', STATEMENT, () => (space(), ['var', expr(ASSIGN)]));\n\n// Compile\nconst varOp = (...decls) => {\n decls = decls.map(d => {\n // Just identifier: let x\n if (typeof d === 'string') return ctx => { ctx[d] = undefined; };\n // Assignment: let x = 1\n if (d[0] === '=') {\n const [, pattern, val] = d;\n const v = compile(val);\n if (typeof pattern === 'string') return ctx => { ctx[pattern] = v(ctx); };\n return ctx => destructure(pattern, v(ctx), ctx);\n }\n return compile(d);\n });\n return ctx => { for (const d of decls) d(ctx); };\n};\noperator('let', varOp);\noperator('const', varOp);\n// var just declares the variable (assignment handled by = operator)\noperator('var', name => (typeof name === 'string'\n ? ctx => { ctx[name] = undefined; }\n : () => {}));\n", "// Function declarations and expressions\nimport { space, next, parse, parens, expr, operator, compile, cur, idx, skip } from '../parse.js';\nimport { RETURN } from './control.js';\nimport { keyword, block } from './block.js';\n\nconst TOKEN = 200;\n\nkeyword('function', TOKEN, () => {\n space();\n // Check for generator: function*\n let generator = false;\n if (cur[idx] === '*') {\n generator = true;\n skip();\n space();\n }\n const name = next(parse.id);\n name && space();\n const node = generator ? ['function*', name, parens() || null, block()] : ['function', name, parens() || null, block()];\n return node;\n});\n\n// Compile\noperator('function', (name, params, body) => {\n body = body ? compile(body) : () => undefined;\n // Normalize params: null \u2192 [], 'x' \u2192 ['x'], [',', 'a', 'b'] \u2192 ['a', 'b']\n const ps = !params ? [] : params[0] === ',' ? params.slice(1) : [params];\n // Check for rest param\n let restName = null, restIdx = -1;\n const last = ps[ps.length - 1];\n if (Array.isArray(last) && last[0] === '...') {\n restIdx = ps.length - 1;\n restName = last[1];\n ps.length--;\n }\n return ctx => {\n const fn = (...args) => {\n const l = {};\n ps.forEach((p, i) => l[p] = args[i]);\n if (restName) l[restName] = args.slice(restIdx);\n const fnCtx = new Proxy(l, {\n get: (l, k) => k in l ? l[k] : ctx[k],\n set: (l, k, v) => ((k in l ? l : ctx)[k] = v, true),\n has: (l, k) => k in l || k in ctx\n });\n try { return body(fnCtx); }\n catch (e) { if (e === RETURN) return e[0]; throw e; }\n };\n if (name) ctx[name] = fn;\n return fn;\n };\n});\n\n// Generator function (parse only, no implementation)\noperator('function*', (name, params, body) => {\n throw Error('Generator functions are not supported in evaluation');\n});\n", "// Async/await/yield: async function, async arrow, await, yield expressions\nimport { unary, expr, skip, space, cur, idx, word, operator, compile } from '../parse.js';\nimport { keyword } from './block.js';\n\nconst PREFIX = 140, ASSIGN = 20;\n\n// await expr \u2192 ['await', expr]\nunary('await', PREFIX);\n\n// yield expr \u2192 ['yield', expr]\n// yield* expr \u2192 ['yield*', expr]\nkeyword('yield', PREFIX, () => {\n space();\n if (cur[idx] === '*') {\n skip();\n space();\n return ['yield*', expr(ASSIGN)];\n }\n return ['yield', expr(ASSIGN)];\n});\n\n// async function name() {} \u2192 ['async', ['function', name, params, body]]\n// async () => {} \u2192 ['async', ['=>', params, body]]\n// async x => {} \u2192 ['async', ['=>', x, body]]\nkeyword('async', PREFIX, () => {\n space();\n // async function - check for 'function' word\n if (word('function')) return ['async', expr(PREFIX)];\n // async arrow: async () => or async x =>\n // Parse at assign precedence to catch => operator\n const params = expr(ASSIGN - .5);\n return params && ['async', params];\n});\n\n// Compile\noperator('async', fn => {\n const inner = compile(fn);\n return ctx => {\n const f = inner(ctx);\n return async function(...args) { return f(...args); };\n };\n});\noperator('await', a => (a = compile(a), async ctx => await a(ctx)));\noperator('yield', a => (a = a ? compile(a) : null, ctx => { throw { __yield__: a ? a(ctx) : undefined }; }));\noperator('yield*', a => (a = compile(a), ctx => { throw { __yield_all__: a(ctx) }; }));\n", "// Class declarations and expressions\n// class A extends B { ... }\nimport { binary, unary, token, expr, space, next, parse, literal, word, operator, compile, skip, cur, idx } from '../parse.js';\nimport { keyword, block } from './block.js';\n\nconst TOKEN = 200, PREFIX = 140, COMP = 90;\nconst STATIC = Symbol('static');\n\n// static member \u2192 ['static', member]\nunary('static', PREFIX);\n\n// instanceof: object instanceof Constructor\nbinary('instanceof', COMP);\n\n// #private fields: #x \u2192 '#x' (identifier starting with #)\ntoken('#', TOKEN, a => {\n if (a) return;\n const id = next(parse.id);\n return id ? '#' + id : void 0;\n});\n\n// class [Name] [extends Base] { body }\nkeyword('class', TOKEN, () => {\n space();\n let name = next(parse.id) || null;\n // 'extends' parsed as name? \u2192 anonymous class\n if (name === 'extends') {\n name = null;\n space();\n } else {\n space();\n if (!word('extends')) return ['class', name, null, block()];\n skip(7); // skip 'extends'\n space();\n }\n return ['class', name, expr(TOKEN), block()];\n});\n\n// Compile\nconst err = msg => { throw Error(msg) };\noperator('instanceof', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) instanceof b(ctx)));\noperator('class', (name, base, body) => {\n base = base ? compile(base) : null;\n body = body ? compile(body) : null;\n return ctx => {\n const Parent = base ? base(ctx) : Object;\n const cls = function(...args) {\n if (!(this instanceof cls)) return err('Class constructor must be called with new');\n const instance = base ? Reflect.construct(Parent, args, cls) : this;\n if (cls.prototype.__constructor__) cls.prototype.__constructor__.apply(instance, args);\n return instance;\n };\n Object.setPrototypeOf(cls.prototype, Parent.prototype);\n Object.setPrototypeOf(cls, Parent);\n if (body) {\n const methods = Object.create(ctx);\n methods['super'] = Parent;\n const entries = body(methods);\n const items = Array.isArray(entries) && typeof entries[0]?.[0] === 'string' ? entries : [];\n for (const [k, v] of items) {\n if (k === 'constructor') cls.prototype.__constructor__ = v;\n else cls.prototype[k] = v;\n }\n }\n if (name) ctx[name] = cls;\n return cls;\n };\n});\noperator('static', a => (a = compile(a), ctx => [[STATIC, a(ctx)]]));\n", "/**\n * Regex literals: /pattern/flags\n *\n * AST (constructor form, JSON-serializable):\n * /abc/gi \u2192 ['//', 'abc', 'gi']\n * /abc/ \u2192 ['//', 'abc']\n *\n * Note: Disambiguates from division by context:\n * - `/` after value = division (falls through to prev)\n * - `/` at start or after operator = regex\n *\n * Compile:\n * ['//', 'abc', 'gi'] \u2192 new RegExp('abc', 'gi')\n */\nimport { token, skip, err, next, idx, cur, operator } from '../parse.js';\n\nconst PREFIX = 140, SLASH = 47, BSLASH = 92;\n\nconst regexChar = c => c === BSLASH ? 2 : c && c !== SLASH; // \\x = 2 chars, else 1 until /\nconst regexFlag = c => c === 103 || c === 105 || c === 109 || c === 115 || c === 117 || c === 121; // g i m s u y\n\ntoken('/', PREFIX, a => {\n if (a) return; // has left operand = division, fall through\n\n // Invalid regex start (quantifiers) or /= - fall through\n const first = cur.charCodeAt(idx);\n if (first === SLASH || first === 42 || first === 43 || first === 63 || first === 61) return;\n\n const pattern = next(regexChar);\n cur.charCodeAt(idx) === SLASH || err('Unterminated regex');\n skip(); // consume closing /\n\n const flags = next(regexFlag);\n // Validate regex syntax\n try { new RegExp(pattern, flags); }\n catch (e) { err('Invalid regex: ' + e.message); }\n\n return flags ? ['//', pattern, flags] : ['//', pattern];\n});\n\n// Compile: ['//', pattern, flags?] \u2192 RegExp\noperator('//', (a, b) => {\n const re = new RegExp(a, b || '');\n return () => re;\n});\n", "// If/else statement - else consumed internally\nimport { space, skip, parens, word, idx, seek, operator, compile } from '../parse.js';\nimport { body, keyword } from './block.js';\n\nconst STATEMENT = 5, SEMI = 59;\n\n// Check for `else` after optional semicolon\nconst checkElse = () => {\n const from = idx;\n if (space() === SEMI) skip();\n space();\n if (word('else')) return skip(4), true;\n return seek(from), false;\n};\n\n// if (cond) body [else body] - self-contained\nkeyword('if', STATEMENT + 1, () => {\n space();\n const node = ['if', parens(), body()];\n if (checkElse()) node.push(body());\n return node;\n});\n\n// Compile\noperator('if', (cond, body, alt) => {\n cond = compile(cond); body = compile(body); alt = alt !== undefined ? compile(alt) : null;\n return ctx => cond(ctx) ? body(ctx) : alt?.(ctx);\n});\n", "// Loops: while, do-while, for, for await, break, continue, return\nimport { expr, skip, space, parse, word, parens, cur, idx, operator, compile, next, seek } from '../parse.js';\nimport { body, keyword } from './block.js';\nimport { destructure } from './destruct.js';\nimport { BREAK, CONTINUE, RETURN } from './control.js';\n\nexport { BREAK, CONTINUE, RETURN };\n\nconst STATEMENT = 5, CBRACE = 125, SEMI = 59;\n\nkeyword('while', STATEMENT + 1, () => (space(), ['while', parens(), body()]));\nkeyword('do', STATEMENT + 1, () => (b => (space(), skip(5), space(), ['do', b, parens()]))(body()));\n\n// for / for await\nkeyword('for', STATEMENT + 1, () => {\n space();\n // for await (x of y)\n if (word('await')) {\n skip(5);\n return (space(), ['for await', parens(), body()]);\n }\n return ['for', parens(), body()];\n});\n\nkeyword('break', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n const from = idx;\n space();\n const c = cur.charCodeAt(idx);\n if (!c || c === CBRACE || c === SEMI || parse.newline) return ['break'];\n const label = next(parse.id);\n if (!label) return ['break'];\n // Label must be followed by end/semicolon/newline, not another token\n space();\n const cc = cur.charCodeAt(idx);\n if (!cc || cc === CBRACE || cc === SEMI || parse.newline) return ['break', label];\n // Not a valid label - backtrack\n seek(from);\n return ['break'];\n});\nkeyword('continue', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n const from = idx;\n space();\n const c = cur.charCodeAt(idx);\n if (!c || c === CBRACE || c === SEMI || parse.newline) return ['continue'];\n const label = next(parse.id);\n if (!label) return ['continue'];\n space();\n const cc = cur.charCodeAt(idx);\n if (!cc || cc === CBRACE || cc === SEMI || parse.newline) return ['continue', label];\n seek(from);\n return ['continue'];\n});\nkeyword('return', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n const c = space();\n return !c || c === CBRACE || c === SEMI || parse.newline ? ['return'] : ['return', expr(STATEMENT)];\n});\n\n// Compile - inline try/catch, use JS break/continue directly\noperator('while', (cond, body) => {\n cond = compile(cond); body = compile(body);\n return ctx => {\n let res;\n while (cond(ctx)) try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n return res;\n };\n});\n\noperator('do', (body, cond) => {\n body = compile(body); cond = compile(cond);\n return ctx => {\n let res;\n do try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n } while (cond(ctx));\n return res;\n };\n});\n\noperator('for', (head, body) => {\n // Normalize head: [';', init, cond, step] or single expr (for-in/of)\n if (Array.isArray(head) && head[0] === ';') {\n let [, init, cond, step] = head;\n init = init ? compile(init) : null;\n cond = cond ? compile(cond) : () => true;\n step = step ? compile(step) : null;\n body = compile(body);\n return ctx => {\n let res;\n for (init?.(ctx); cond(ctx); step?.(ctx)) try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n return res;\n };\n }\n // For-in/of: head is ['in', lhs, rhs] or ['of', lhs, rhs]\n if (Array.isArray(head) && (head[0] === 'in' || head[0] === 'of')) {\n let [op, lhs, rhs] = head;\n // Extract name from declaration: ['let', 'x'] \u2192 'x'\n if (Array.isArray(lhs) && (lhs[0] === 'let' || lhs[0] === 'const' || lhs[0] === 'var')) lhs = lhs[1];\n if (op === 'in') return forIn(lhs, rhs, body);\n if (op === 'of') return forOf(lhs, rhs, body);\n }\n});\n\nconst forOf = (name, iterable, body) => {\n iterable = compile(iterable); body = compile(body);\n const isPattern = Array.isArray(name);\n return ctx => {\n let res;\n const prev = isPattern ? null : ctx[name];\n for (const val of iterable(ctx)) {\n if (isPattern) destructure(name, val, ctx); else ctx[name] = val;\n try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n }\n if (!isPattern) ctx[name] = prev;\n return res;\n };\n};\n\nconst forIn = (name, obj, body) => {\n obj = compile(obj); body = compile(body);\n const isPattern = Array.isArray(name);\n return ctx => {\n let res;\n const prev = isPattern ? null : ctx[name];\n for (const key in obj(ctx)) {\n if (isPattern) destructure(name, key, ctx); else ctx[name] = key;\n try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n }\n if (!isPattern) ctx[name] = prev;\n return res;\n };\n};\n\noperator('break', () => () => { throw BREAK; });\noperator('continue', () => () => { throw CONTINUE; });\noperator('return', val => (val = val !== undefined ? compile(val) : null,\n ctx => { throw (RETURN[0] = val?.(ctx), RETURN); }));\n", "// try/catch/finally/throw statements\n// AST: ['catch', ['try', body], param, catchBody] or ['finally', inner, body]\nimport { space, parse, parens, expr, operator, compile } from '../parse.js';\nimport { keyword, infix, block } from './block.js';\nimport { BREAK, CONTINUE, RETURN } from './control.js';\n\nconst STATEMENT = 5;\n\nkeyword('try', STATEMENT + 1, () => ['try', block()]);\ninfix('catch', STATEMENT + 1, a => (space(), ['catch', a, parens(), block()]));\ninfix('finally', STATEMENT + 1, a => ['finally', a, block()]);\n\nkeyword('throw', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n space();\n if (parse.newline) throw SyntaxError('Unexpected newline after throw');\n return ['throw', expr(STATEMENT)];\n});\n\n// Compile\noperator('try', tryBody => {\n tryBody = tryBody ? compile(tryBody) : null;\n return ctx => tryBody?.(ctx);\n});\n\noperator('catch', (tryNode, catchName, catchBody) => {\n const tryBody = tryNode?.[1] ? compile(tryNode[1]) : null;\n catchBody = catchBody ? compile(catchBody) : null;\n return ctx => {\n let result;\n try {\n result = tryBody?.(ctx);\n } catch (e) {\n if (e === BREAK || e === CONTINUE || e === RETURN) throw e;\n if (catchName !== null && catchBody) {\n const had = catchName in ctx, orig = ctx[catchName];\n ctx[catchName] = e;\n try { result = catchBody(ctx); }\n finally { had ? ctx[catchName] = orig : delete ctx[catchName]; }\n } else if (catchName === null) throw e;\n }\n return result;\n };\n});\n\noperator('finally', (inner, finallyBody) => {\n inner = inner ? compile(inner) : null;\n finallyBody = finallyBody ? compile(finallyBody) : null;\n return ctx => {\n let result;\n try { result = inner?.(ctx); }\n finally { finallyBody?.(ctx); }\n return result;\n };\n});\n\noperator('throw', val => (val = compile(val), ctx => { throw val(ctx); }));\n", "// Switch/case/default\n// AST: ['switch', val, ['case', test, body], ['default', body], ...]\nimport { expr, skip, space, parens, operator, compile, idx, err, seek, parse, lookup, word, cur } from '../parse.js';\nimport { keyword } from './block.js';\nimport { BREAK } from './control.js';\n\nconst STATEMENT = 5, ASSIGN = 20, COLON = 58, SEMI = 59, CBRACE = 125;\n\n// Flag to track if we're inside switch body (case/default parsing)\nlet inSwitch = 0;\n\n// Reserve 'case' and 'default' as keywords that fail outside switch body\n// Allows property names like {case:1} ONLY when not in switch context\nconst reserve = (w, l = w.length, c = w.charCodeAt(0), prev = lookup[c]) =>\n lookup[c] = (a, prec, op) => (word(w) && !a && inSwitch) || prev?.(a, prec, op);\nreserve('case');\nreserve('default');\n\n// caseBody() - parse statements until next case/default/}\nconst caseBody = (c) => {\n const stmts = [];\n while ((c = space()) !== CBRACE && !word('case') && !word('default')) {\n if (c === SEMI) { skip(); continue; }\n stmts.push(expr(STATEMENT - .5)) || err();\n }\n return stmts.length > 1 ? [';', ...stmts] : stmts[0] || null;\n};\n\n// switchBody() - parse case/default statements\nconst switchBody = () => {\n space() === 123 || err('Expected {'); skip();\n inSwitch++;\n const cases = [];\n try {\n while (space() !== CBRACE) {\n if (word('case')) {\n seek(idx + 4); space();\n const test = expr(ASSIGN - .5);\n space() === COLON && skip();\n cases.push(['case', test, caseBody()]);\n } else if (word('default')) {\n seek(idx + 7); space() === COLON && skip();\n cases.push(['default', caseBody()]);\n } else err('Expected case or default');\n }\n } finally { inSwitch--; }\n skip();\n return cases;\n};\n\n// switch (x) { ... }\nkeyword('switch', STATEMENT + 1, () => space() === 40 && ['switch', parens(), ...switchBody()]);\n\n// Compile\noperator('switch', (val, ...cases) => {\n val = compile(val);\n if (!cases.length) return ctx => val(ctx);\n\n cases = cases.map(c => [\n c[0] === 'case' ? compile(c[1]) : null,\n (c[0] === 'case' ? c[2] : c[1])?.[0] === ';'\n ? (c[0] === 'case' ? c[2] : c[1]).slice(1).map(compile)\n : (c[0] === 'case' ? c[2] : c[1]) ? [compile(c[0] === 'case' ? c[2] : c[1])] : []\n ]);\n\n return ctx => {\n const v = val(ctx);\n let matched = false, r;\n for (const [test, stmts] of cases)\n if (matched || test === null || test(ctx) === v)\n for (matched = true, i = 0; i < stmts.length; i++)\n try { r = stmts[i](ctx); }\n catch (e) { if (e === BREAK) return r; throw e; }\n var i;\n return r;\n };\n});\n", "// Additional JS statements: debugger, with (parse-only)\n// debugger \u2192 ['debugger']\n// with (obj) body \u2192 ['with', obj, body]\nimport { space, parens } from '../parse.js';\nimport { keyword, body } from './block.js';\n\nconst STATEMENT = 5;\n\n// debugger statement\nkeyword('debugger', STATEMENT + 1, () => ['debugger']);\n\n// with statement\nkeyword('with', STATEMENT + 1, () => (space(), ['with', parens(), body()]));\n", "/**\n * Import/Export with contextual 'from' operator\n *\n * AST:\n * import './x.js' \u2192 ['import', path]\n * import X from './x.js' \u2192 ['import', ['from', 'X', path]]\n * import { a, b } from './x' \u2192 ['import', ['from', ['{}', ...], path]]\n * import * as X from './x.js' \u2192 ['import', ['from', ['as', '*', X], path]]\n * export { a } from './x' \u2192 ['export', ['from', ['{}', ...], path]]\n * export const x = 1 \u2192 ['export', decl]\n */\nimport { token, expr, space, lookup, skip, word } from '../parse.js';\nimport { keyword } from './block.js';\n\nconst STATEMENT = 5, SEQ = 10, STAR = 42;\n\n// * as prefix in import context (import * as X)\nconst prevStar = lookup[STAR];\nlookup[STAR] = (a, prec) => !a ? (skip(), '*') : prevStar?.(a, prec);\n\n// 'from' as contextual binary - only after import-like LHS (not = or ,), false in prefix for identifier fallback\ntoken('from', SEQ + 1, a => !a ? false : a[0] !== '=' && a[0] !== ',' && (space(), ['from', a, expr(SEQ + 1)]));\n\n// 'as' for aliasing: * as X, { a as b }. False in prefix for identifier fallback\ntoken('as', SEQ + 2, a => !a ? false : (space(), ['as', a, expr(SEQ + 2)]));\n\n// import: prefix that parses specifiers + from + path\n// import.meta returns ['import.meta']\nkeyword('import', STATEMENT, () => (\n word('.meta') ? (skip(5), ['import.meta']) : ['import', expr(SEQ)]\n));\n\n// export: prefix for declarations or re-exports (use STATEMENT to capture const/let/function)\nkeyword('export', STATEMENT, () => (space(), ['export', expr(STATEMENT)]));\n\n// default: prefix for export default (NOT switch default: which has colon)\nkeyword('default', SEQ + 1, () => space() !== 58 && (space(), ['default', expr(SEQ)]));\n\n// Compile stubs - import/export are parse-only (no runtime semantics)\nimport { operator, compile } from '../parse.js';\noperator('import', () => () => undefined);\noperator('export', () => () => undefined);\noperator('from', (a, b) => () => undefined);\noperator('as', (a, b) => () => undefined);\noperator('default', (a) => compile(a));\n", "// ASI: newline at `;` precedence level triggers nary `;`\nimport { parse, prec } from '../parse.js';\n\n// Set prec.asi before importing to customize (default: prec[';'])\nconst lvl = prec.asi ?? prec[';'];\n\nparse.asi = (a, p, expr, b, items) => p < lvl && (b = expr(lvl - .5)) && (\n items = b?.[0] === ';' ? b.slice(1) : [b],\n a?.[0] === ';' ? (a.push(...items), a) : [';', a, ...items]\n);\n", "/**\n * jessie: Practical JS subset\n *\n * Builds on justin with statements: blocks, variables, if/else,\n * loops, functions, try/catch, switch, throw.\n */\nimport './justin.js';\n\n// Statement features (var.js must come before destruct.js)\nimport './feature/var.js';\nimport './feature/function.js';\nimport './feature/async.js';\nimport './feature/class.js';\nimport './feature/regex.js';\nimport './feature/destruct.js';\n\n// Control flow\nimport './feature/if.js';\nimport './feature/loop.js';\nimport './feature/try.js';\nimport './feature/switch.js';\nimport './feature/statement.js'; // debugger, with, labeled statements\n\n// Module system\nimport './feature/module.js';\nimport './feature/accessor.js';\n\n// Automatic Semicolon Insertion\nimport './feature/asi.js';\n\nexport * from './parse.js';\nexport { default } from './subscript.js';\n", "var sprae = require(\"./sprae.js\").default; var jessie = require(\"subscript/jessie\"); sprae.use({ compile: jessie }); module.exports = sprae; var cur = document.currentScript;\nvar prefix = cur.getAttribute(\"prefix\") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;\nvar start = cur.getAttribute(\"start\") ?? cur.dataset.start ?? cur.dataset.spraeStart;\ncur.removeAttribute(\"prefix\"); cur.removeAttribute(\"start\"); delete cur.dataset.prefix; delete cur.dataset.start; delete cur.dataset.spraePrefix; delete cur.dataset.spraeStart;\nif (prefix) sprae.use({ prefix });\nif (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["_dispose", "_state", "_on", "_off", "_add", "prefix", "isCE", "signal", "effect", "computed", "batch", "untracked", "directive", "modifier", "currentDir", "currentEl", "elHint", "err", "sprae", "dir", "compile", "parse", "cache", "use", "decorate", "mo", "mutate", "start", "frag", "dashcase", "camelcase", "attr", "clsx", "throttle", "debounce", "core_default", "init_core", "__esmMin", "init_store", "el", "fn", "hint", "expr", "msg", "display", "root", "state", "store_default", "fx", "offs", "i", "current", "add", "_attrs", "name", "value", "prev", "child", "next", "e", "cb", "_out", "result", "v", "config", "mods", "params", "mod", "wrapFn", "k", "values", "mutations", "m", "tpl", "doc", "content", "attributes", "ref", "childNodes", "a", "str", "match", "_", "c", "s", "ms", "_planned", "_depth", "arg", "schedule", "throttled", "dirty", "immediate", "_blocked", "_count", "_c", "_signals", "_change", "_set", "_parent", "sandbox", "store", "list", "create", "shallow", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "descs", "computed", "isMut", "mut", "fn", "length", "i", "wrap", "ver", "t", "val", "prev", "_s", "_v", "untracked", "batch", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "init_signal", "__esmMin", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "init_if", "__esmMin", "init_core", "el", "state", "_a", "_b", "_holder", "_el", "core_default", "_state", "frag", "mutate", "throttle", "match", "s", "_off", "_on", "cb", "value", "else_default", "init_else", "__esmMin", "init_core", "el", "_a", "_el", "_prev", "frag", "_state", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "cur", "node", "root", "active", "off", "pos", "r", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "_prev", "clearAttr", "v", "c", "clsx", "style_default", "init_style", "__esmMin", "init_core", "el", "st", "ex", "name", "_static", "v", "attr", "k", "fx_default", "init_fx", "__esmMin", "fn", "value_default", "init_value", "__esmMin", "init_core", "el", "state", "core_default", "value", "_from", "_to", "attr", "v", "setter", "ref_default", "init_ref", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "el", "state", "result", "scope_default", "init_scope", "__esmMin", "init_core", "init_store", "el", "rootState", "state", "_state", "store", "init", "holder", "_frag", "frag", "values", "k", "d", "_signals", "computed", "_set", "v", "signal", "untracked", "core_default", "posHandler", "keyHandler", "rm", "each_default", "init_each", "__esmMin", "init_core", "s", "k", "_signals", "v", "r", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "doc", "holder", "rowMap", "rows", "items", "keys", "cur", "keyed", "mkrow", "scope", "h", "proxy", "el", "frag", "insert", "pending", "f", "core_default", "update", "throttle", "mutate", "src", "newl", "prevl", "i", "newRows", "seen", "moved", "id", "row", "next", "n", "_state", "cb", "value", "_", "off", "effect", "_change", "parse", "_off", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "isCE", "spread_default", "init_spread", "__esmMin", "init_core", "target", "value", "ce", "isCE", "key", "attr", "dashcase", "event_default", "init_event", "__esmMin", "init_core", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "init_sequence", "__esmMin", "init_core", "el", "state", "expr", "names", "cur", "off", "evaluate", "parse", "steps", "step", "i", "length", "prev", "str", "name", "mods", "next", "fn", "e", "trigger", "decorate", "_poff", "isTemplate", "html_default", "init_html", "__esmMin", "init_core", "v", "el", "state", "_el", "html", "doc", "holder", "_dispose", "frag", "untracked", "core_default", "_a", "_state", "portal_default", "init_portal", "__esmMin", "el", "state", "expr", "doc", "comment", "currentTarget", "value", "root", "target", "hidden_default", "init_hidden", "__esmMin", "el", "value", "mount_default", "init_mount", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "cleanup", "decorate", "result", "fn", "_dispose", "change_default", "init_change", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "coerce", "o", "handler", "decorate", "fn", "_dispose", "intersect", "intersect_default", "init_intersect", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "once", "trigger", "decorate", "entry", "fn", "io", "entries", "_dispose", "resize", "resize_default", "init_resize", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "trigger", "decorate", "size", "fn", "ro", "entries", "entry", "rect", "_dispose", "sprae_exports", "__export", "batch", "computed", "debounce", "sprae_default", "dispose", "effect", "signal", "core_default", "start", "store_default", "throttle", "untracked", "use", "dir", "parseTime", "scheduler", "keys", "keyMatch", "hasSemi", "init_sprae", "__esmMin", "init_store", "init_core", "init_signal", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "init_sequence", "init_html", "init_portal", "init_hidden", "init_mount", "init_change", "init_intersect", "init_resize", "mount_default", "change_default", "directive", "__default", "spread_default", "class_default", "text_default", "html_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "portal_default", "hidden_default", "intersect_default", "resize_default", "target", "name", "expr", "state", "dirName", "mods", "create", "hasMods", "el", "update", "change", "trigger", "count", "decorate", "_dispose", "evaluate", "parse", "_out", "out", "isCE", "_state", "off", "_d", "_off", "t", "n", "u", "fn", "modifier", "a", "b", "sched", "e", "_done", "_fn", "_pd", "doc", "pdHandler", "_skip", "_how", "k", "s", "d", "q", "esc", "ch", "sequence_default", "prev", "str", "obs", "event_default", "p", "signal_exports", "idx", "cur", "parse", "err", "loc", "next", "skip", "seek", "expr", "space", "peek", "id", "word", "parens", "lookup", "prec", "token", "binary", "unary", "literal", "nary", "group", "access", "operators", "operator", "compile", "init_parse", "__esmMin", "s", "msg", "at", "lines", "last", "before", "ptr", "chr", "after", "node", "is", "from", "l", "n", "p", "end", "cc", "newNode", "fn", "nl", "c", "w", "op", "map", "prev", "matched", "r", "a", "curPrec", "curOp", "right", "b", "post", "val", "args", "v", "ctx", "PERIOD", "_0", "_9", "_E", "_e", "PLUS", "MINUS", "UNDERSCORE", "_n", "_a", "_f", "_A", "_F", "strip", "num", "charTest", "init_number", "__esmMin", "init_parse", "s", "a", "str", "next", "c", "cur", "idx", "skip", "err", "parse", "lookup", "i", "cfg", "pre", "base", "BSLASH", "DQUOTE", "SQUOTE", "esc", "parseString", "init_string", "__esmMin", "init_parse", "q", "a", "_", "s", "parse", "skip", "next", "c", "cur", "idx", "err", "lookup", "ASSIGN", "assign", "ops", "init_assignment", "__esmMin", "init_parse", "op", "binary", "a", "fn", "obj", "key", "ctx", "compile", "o", "k", "v", "operator", "b", "LOR", "LAND", "PREFIX", "init_logical", "__esmMin", "init_parse", "binary", "unary", "operator", "a", "compile", "ctx", "b", "OR", "XOR", "AND", "SHIFT", "PREFIX", "init_bitwise", "__esmMin", "init_parse", "binary", "unary", "operator", "a", "compile", "ctx", "b", "COMP", "init_comparison", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "EQ", "init_equality", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "ADD", "MULT", "PREFIX", "init_arithmetic", "__esmMin", "init_parse", "binary", "unary", "operator", "a", "b", "compile", "ctx", "POSTFIX", "inc", "init_increment", "__esmMin", "init_parse", "token", "a", "expr", "fn", "obj", "key", "ctx", "compile", "operator", "b", "o", "k", "STATEMENT", "SEQ", "ACCESS", "seq", "init_group", "__esmMin", "init_parse", "group", "nary", "args", "compile", "ctx", "a", "operator", "unsafe", "ACCESS", "err", "isLval", "call", "prop", "init_access", "__esmMin", "init_parse", "k", "access", "binary", "msg", "operator", "a", "b", "compile", "ctx", "hasSparse", "args", "arg", "obj", "path", "n", "fn", "o", "cache", "subscript", "PUA", "compileTemplate", "isAST", "subscript_default", "init_subscript", "__esmMin", "init_number", "init_string", "init_assignment", "init_logical", "init_bitwise", "init_comparison", "init_equality", "init_arithmetic", "init_increment", "init_group", "init_access", "init_parse", "strings", "values", "compile", "parse", "code", "acc", "i", "ast", "inject", "node", "v", "SPACE", "space", "_a", "comments", "init_comment", "__esmMin", "init_parse", "parse", "s", "e", "cc", "j", "c", "cur", "idx", "i", "seek", "EQ", "init_identity", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "LOR", "init_nullish", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "EXP", "ASSIGN", "err", "init_pow", "__esmMin", "init_parse", "init_access", "binary", "operator", "a", "b", "compile", "ctx", "msg", "isLval", "prop", "obj", "path", "COMP", "init_membership", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "ASSIGN", "SHIFT", "err", "init_bitwise_unsigned", "__esmMin", "init_parse", "init_access", "msg", "binary", "operator", "a", "b", "compile", "ctx", "isLval", "prop", "o", "k", "flatten", "destructure", "init_destruct", "__esmMin", "init_parse", "items", "pattern", "value", "ctx", "op", "raw", "used", "item", "rest", "k", "key", "binding", "def", "val", "compile", "i", "ASSIGN", "err", "init_assign_logical", "__esmMin", "init_parse", "init_destruct", "init_access", "msg", "binary", "operator", "a", "b", "pattern", "compile", "ctx", "destructure", "isLval", "prop", "obj", "path", "o", "k", "STATEMENT", "OBRACE", "CBRACE", "keyword", "infix", "block", "body", "init_block", "__esmMin", "init_parse", "op", "prec", "map", "c", "l", "prev", "lookup", "r", "a", "curPrec", "curOp", "from", "idx", "cur", "parse", "peek", "seek", "loc", "space", "err", "skip", "expr", "init_literal", "__esmMin", "init_parse", "init_block", "literal", "keyword", "ASSIGN", "init_ternary", "__esmMin", "init_parse", "token", "a", "b", "c", "expr", "next", "operator", "compile", "ctx", "BREAK", "CONTINUE", "RETURN", "init_control", "__esmMin", "ASSIGN", "init_arrow", "__esmMin", "init_parse", "init_control", "binary", "operator", "a", "b", "ps", "restIdx", "restName", "last", "isBlock", "compile", "ctx", "args", "l", "p", "i", "fnCtx", "k", "v", "r", "e", "RETURN", "PREFIX", "init_spread", "__esmMin", "init_parse", "unary", "operator", "a", "compile", "ctx", "ACCESS", "init_optional", "__esmMin", "init_parse", "init_access", "token", "a", "b", "cc", "space", "skip", "expr", "operator", "compile", "unsafe", "ctx", "k", "args", "arg", "container", "prop", "c", "p", "obj", "o", "fn", "PREFIX", "init_unary", "__esmMin", "init_parse", "init_block", "unary", "keyword", "word", "skip", "expr", "operator", "a", "compile", "ctx", "obj", "key", "call", "target", "args", "argList", "f", "ACC", "ASSIGN", "OPAREN", "CPAREN", "OBRACE", "CBRACE", "accessor", "init_accessor", "__esmMin", "init_parse", "kind", "a", "space", "name", "next", "parse", "cur", "idx", "skip", "params", "expr", "token", "operator", "body", "compile", "ctx", "s", "param", "v", "ASSIGN", "TOKEN", "isObject", "init_collection", "__esmMin", "init_parse", "init_accessor", "a", "group", "binary", "operator", "b", "compile", "props", "p", "ctx", "obj", "acc", "e", "f", "ACC", "n", "desc", "body", "ACCESS", "BACKTICK", "DOLLAR", "OBRACE", "BSLASH", "esc", "parseBody", "prev", "init_template", "__esmMin", "init_parse", "parts", "s", "c", "cur", "idx", "skip", "expr", "err", "lookup", "a", "prec", "parse", "p", "operator", "compile", "ctx", "tag", "strings", "exprs", "strs", "e", "init_justin", "__esmMin", "init_subscript", "init_parse", "init_comment", "init_identity", "init_nullish", "init_pow", "init_membership", "init_bitwise_unsigned", "init_assign_logical", "init_literal", "init_ternary", "init_arrow", "init_spread", "init_optional", "init_unary", "init_collection", "init_template", "parse", "STATEMENT", "SEQ", "ASSIGN", "decl", "varOp", "init_var", "__esmMin", "init_parse", "init_block", "init_destruct", "keyword", "node", "expr", "space", "decls", "d", "ctx", "pattern", "val", "v", "compile", "destructure", "operator", "name", "TOKEN", "init_function", "__esmMin", "init_parse", "init_control", "init_block", "keyword", "space", "generator", "cur", "idx", "skip", "name", "next", "parse", "parens", "block", "operator", "params", "body", "compile", "ps", "restName", "restIdx", "last", "ctx", "fn", "args", "l", "p", "i", "fnCtx", "k", "v", "e", "RETURN", "PREFIX", "ASSIGN", "init_async", "__esmMin", "init_parse", "init_block", "unary", "keyword", "space", "cur", "idx", "skip", "expr", "word", "params", "operator", "fn", "inner", "compile", "ctx", "f", "args", "a", "TOKEN", "PREFIX", "COMP", "STATIC", "err", "init_class", "__esmMin", "init_parse", "init_block", "unary", "binary", "token", "a", "id", "next", "parse", "keyword", "space", "name", "word", "block", "skip", "expr", "msg", "operator", "b", "compile", "ctx", "base", "body", "Parent", "cls", "args", "instance", "methods", "entries", "items", "k", "v", "PREFIX", "SLASH", "BSLASH", "regexChar", "regexFlag", "init_regex", "__esmMin", "init_parse", "c", "token", "a", "first", "cur", "idx", "pattern", "next", "err", "skip", "flags", "e", "operator", "b", "re", "STATEMENT", "SEMI", "checkElse", "init_if", "__esmMin", "init_parse", "init_block", "from", "idx", "space", "skip", "word", "seek", "keyword", "node", "parens", "body", "operator", "cond", "alt", "compile", "ctx", "STATEMENT", "CBRACE", "SEMI", "forOf", "forIn", "init_loop", "__esmMin", "init_parse", "init_block", "init_destruct", "init_control", "keyword", "space", "parens", "body", "b", "skip", "word", "parse", "from", "idx", "c", "cur", "label", "next", "cc", "seek", "expr", "operator", "cond", "compile", "ctx", "res", "e", "BREAK", "CONTINUE", "RETURN", "head", "init", "step", "op", "lhs", "rhs", "name", "iterable", "isPattern", "prev", "val", "destructure", "obj", "key", "STATEMENT", "init_try", "__esmMin", "init_parse", "init_block", "init_control", "keyword", "block", "infix", "a", "space", "parens", "parse", "expr", "operator", "tryBody", "compile", "ctx", "tryNode", "catchName", "catchBody", "result", "e", "BREAK", "CONTINUE", "RETURN", "had", "orig", "inner", "finallyBody", "val", "STATEMENT", "ASSIGN", "COLON", "SEMI", "CBRACE", "inSwitch", "reserve", "caseBody", "switchBody", "init_switch", "__esmMin", "init_parse", "init_block", "init_control", "w", "l", "c", "prev", "lookup", "a", "prec", "op", "word", "stmts", "space", "skip", "expr", "err", "cases", "seek", "idx", "test", "keyword", "parens", "operator", "val", "compile", "ctx", "v", "matched", "r", "i", "e", "BREAK", "STATEMENT", "init_statement", "__esmMin", "init_parse", "init_block", "keyword", "space", "parens", "body", "STATEMENT", "SEQ", "STAR", "prevStar", "init_module", "__esmMin", "init_parse", "init_block", "lookup", "a", "prec", "skip", "token", "space", "expr", "keyword", "word", "operator", "b", "compile", "lvl", "init_asi", "__esmMin", "init_parse", "prec", "parse", "a", "p", "expr", "b", "items", "jessie_exports", "__export", "access", "binary", "compile", "cur", "subscript_default", "err", "expr", "group", "id", "idx", "literal", "loc", "lookup", "nary", "next", "operator", "operators", "parens", "parse", "peek", "prec", "seek", "skip", "space", "token", "unary", "word", "init_jessie", "__esmMin", "init_justin", "init_var", "init_function", "init_async", "init_class", "init_regex", "init_destruct", "init_if", "init_loop", "init_try", "init_switch", "init_statement", "init_module", "init_accessor", "init_asi", "init_parse", "init_subscript", "sprae", "jessie", "cur", "prefix", "start", "el"]
|
|
3
|
+
"sources": ["../core.js", "../store.js", "../signal.js", "../directive/if.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/value.js", "../directive/ref.js", "../directive/scope.js", "../directive/each.js", "../directive/_.js", "../directive/spread.js", "../directive/event.js", "../directive/sequence.js", "../directive/html.js", "../directive/portal.js", "../directive/hidden.js", "../directive/mount.js", "../directive/change.js", "../directive/intersect.js", "../directive/resize.js", "../sprae.js", "../node_modules/subscript/parse.js", "../node_modules/subscript/feature/number.js", "../node_modules/subscript/feature/string.js", "../node_modules/subscript/feature/op/assignment.js", "../node_modules/subscript/feature/op/logical.js", "../node_modules/subscript/feature/op/bitwise.js", "../node_modules/subscript/feature/op/comparison.js", "../node_modules/subscript/feature/op/equality.js", "../node_modules/subscript/feature/op/arithmetic.js", "../node_modules/subscript/feature/op/increment.js", "../node_modules/subscript/feature/group.js", "../node_modules/subscript/feature/access.js", "../node_modules/subscript/subscript.js", "../node_modules/subscript/feature/comment.js", "../node_modules/subscript/feature/op/identity.js", "../node_modules/subscript/feature/op/nullish.js", "../node_modules/subscript/feature/op/pow.js", "../node_modules/subscript/feature/op/membership.js", "../node_modules/subscript/feature/op/bitwise-unsigned.js", "../node_modules/subscript/feature/destruct.js", "../node_modules/subscript/feature/op/assign-logical.js", "../node_modules/subscript/feature/block.js", "../node_modules/subscript/feature/literal.js", "../node_modules/subscript/feature/op/ternary.js", "../node_modules/subscript/feature/control.js", "../node_modules/subscript/feature/op/arrow.js", "../node_modules/subscript/feature/op/spread.js", "../node_modules/subscript/feature/op/optional.js", "../node_modules/subscript/feature/op/unary.js", "../node_modules/subscript/feature/accessor.js", "../node_modules/subscript/feature/collection.js", "../node_modules/subscript/feature/template.js", "../node_modules/subscript/justin.js", "../node_modules/subscript/feature/var.js", "../node_modules/subscript/feature/function.js", "../node_modules/subscript/feature/async.js", "../node_modules/subscript/feature/class.js", "../node_modules/subscript/feature/regex.js", "../node_modules/subscript/feature/if.js", "../node_modules/subscript/feature/loop.js", "../node_modules/subscript/feature/try.js", "../node_modules/subscript/feature/switch.js", "../node_modules/subscript/feature/statement.js", "../node_modules/subscript/feature/module.js", "../node_modules/subscript/feature/asi.js", "../node_modules/subscript/jessie.js", "<stdin>"],
|
|
4
|
+
"sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\n\n\n/** Symbol for disposal (using standard Symbol.dispose if available) */\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\"))\n\n/** Symbol for accessing element's reactive state */\nexport const _state = Symbol(\"state\")\n\n/** Symbol for enabling element effects */\nexport const _on = Symbol('on')\n\n/** Symbol for disabling element effects */\nexport const _off = Symbol('off')\n\n/** Symbol for adding child to element */\nexport const _add = Symbol('init')\n\n/** Directive prefix (default: ':') */\nexport let prefix = ':';\n\n/** Check if element is a custom element (has hyphen in tag name) */\nexport const isCE = (el) => el.localName?.includes('-')\n\n/**\n * A reactive signal containing a value.\n * @template T\n * @typedef {Object} Signal\n * @property {T} value - Current value (reading subscribes, writing notifies)\n * @property {() => T} peek - Read without subscribing\n * @property {() => T} valueOf - Get value for coercion\n * @property {() => T} toJSON - Get value for JSON serialization\n * @property {() => string} toString - Get value as string\n */\n\n/**\n * Internal effect function type.\n * @typedef {Object} EffectFn\n * @property {Set<Set<EffectFn>>} deps - Dependency sets\n * @property {() => void} fn - Original function\n */\n\n/**\n * Creates a reactive signal.\n * @template T\n * @type {<T>(value: T) => Signal<T>}\n */\nexport let signal;\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @type {(fn: () => void | (() => void)) => () => void}\n */\nexport let effect;\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @type {<T>(fn: () => T) => Signal<T>}\n */\nexport let computed;\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let batch = (fn) => fn();\n\n/**\n * Runs a function without tracking signal dependencies.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let untracked = batch;\n\n/**\n * Registry of directive handlers.\n * @type {Record<string, DirectiveHandler>}\n */\nexport let directive = {};\n\n/**\n * Registry of modifier functions.\n * @type {Record<string, ModifierHandler>}\n */\nexport let modifier = {}\n\n\nlet currentDir = null;\nlet currentEl = null;\n\n/**\n * Formats element for error message (minimal context).\n * @param {Element} [el] - Element to format\n * @returns {string} Element hint like \"<div#id.class>\"\n */\nconst elHint = (el) => {\n if (!el?.tagName) return ''\n let hint = el.tagName.toLowerCase()\n if (el.id) hint += '#' + el.id\n else if (el.className) hint += '.' + el.className.split(' ')[0]\n return `<${hint}>`\n}\n\n/**\n * Reports an error with context.\n * @param {Error|string} e - Error to report\n * @param {string} [expr] - Expression that caused error\n */\nconst err = (e, expr, el = currentEl) => {\n let msg = `\u2234 ${e}`\n if (el) msg += `\\n in ${elHint(el)}`\n if (expr) {\n const display = expr.length > 100 ? expr.slice(0, 80) + `\u2026 (${expr.length} chars)` : expr\n msg += currentDir ? `\\n ${currentDir}=\"${display}\"` : `\\n =\"${display}\"`\n }\n console.error(msg)\n}\n\n/**\n * @callback DirectiveHandler\n * @param {Element} el - Target element\n * @param {Object} state - Reactive state object\n * @param {string} expr - Expression string\n * @param {string} [name] - Directive name with modifiers\n * @returns {((value: any) => void | (() => void)) | { [Symbol.dispose]: () => void } | void}\n */\n\n/**\n * @callback ModifierHandler\n * @param {Function} fn - Function to modify\n * @param {...string} args - Modifier arguments (from dash-separated values)\n * @returns {Function}\n */\n\n/**\n * @typedef {Object} SpraeState\n * @property {Record<string, Signal>} [_signals] - Internal signals map\n */\n\n/** Symbol for cached directive scan on clone masters */\nconst _dirs = Symbol('dirs')\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object} [state] - Initial state values to populate the element's reactive state.\n * @param {Element} [master] - Internal: clone source (eg. :each template) \u2014 first clone records\n * its directive scan on the master, later clones replay it without touching attributes.\n * @returns {SpraeState & Object} The reactive state object associated with the element.\n */\nconst sprae = (root = document.body, state, master) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (root[_state]) return Object.assign(root[_state], state)\n\n // console.group('sprae', root)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let el = root, fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => {\n if (offs) return offs\n offs = Array(fx.length)\n for (let i = 0; i < fx.length; i++) offs[i] = fx[i]()\n return offs\n }\n el[_off] = () => {\n if (!offs) return\n let current = offs\n offs = null\n for (let i = 0; i < current.length; i++) current[i]?.()\n }\n\n // destroy\n el[_dispose] ||= () => {\n el[_off]?.()\n if (mo?._root === el) { mo.disconnect(); mo = null }\n el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null\n }\n\n // apply one directive to el; true = stop (subsprae directives like :each/:if/:scope change state identity)\n const apply = (el, name, short, value, prev = el[_state]) => (\n currentDir = name, currentEl = el,\n // directive initializer can be redefined\n fx.push(start = dir(el, short, value, state)), offs.push(start()),\n el[_state] !== prev\n )\n let start\n\n const add = el[_add] = (el, mel) => {\n let dirs = mel?.[_dirs]\n\n // replay master's recorded scan \u2014 no attribute reads, no parsing\n if (dirs !== undefined) {\n for (let [name, short, value] of dirs) {\n el.removeAttribute(name) // clones from the recording batch still carry attrs; no-op for later ones\n if (apply(el, name, short, value)) return\n }\n }\n else {\n let _attrs = el.attributes, rec = mel && (mel[_dirs] = [])\n\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n // strip master too: later clones come out clean; unprocessed tail (after a stop) stays for subsprae\n mel?.removeAttribute(name)\n let short = name.slice(prefix.length)\n rec?.push([name, short, value])\n\n if (apply(el, name, short, value)) return\n } else i++\n }\n }\n\n // custom elements own their children \u2014 don't descend\n if (el !== root && isCE(el)) return\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // real DOM: firstChild/nextSibling avoids array copy; frag.childNodes is already snapshot array\n if (el.firstChild !== undefined) {\n // master is never mutated structurally, so its pointers stay aligned with pre-captured clone pointers\n let child = el.firstChild, mchild = mel?.firstChild, next\n while (child) (next = child.nextSibling, child.nodeType == 1 && add(child, mchild), mchild &&= mchild.nextSibling, child = next)\n }\n else for (let child of el.childNodes) child.nodeType == 1 && add(child)\n };\n\n add(el, master);\n\n currentDir = currentEl = null;\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n // CE roots: don't claim _state \u2014 CE manages its own via connectedCallback (parent processes attrs, CE processes children)\n if (el[_state] === undefined && !isCE(root)) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n/** Package version (injected by bundler) */\nsprae.version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev'\n\n\n// directive initializer\n/** @type {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} */\nexport let dir\n\n/**\n * Compiles an expression string into an evaluator function.\n * @type {(expr: string) => (state: Object) => any}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @returns {(state: Object, cb?: (value: any) => any) => any} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n // static time errors\n try {\n fn = compile(expr || 'undefined')\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { err(e, expr) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then\n ? (result.then(v => _out = cb(v)).catch(e => err(e, expr, this)), () => typeof _out === 'function' && _out())\n : cb(result)\n else return result\n } catch (e) {\n err(e, expr, this)\n }\n }\n}\nconst cache = {};\n\n\n/**\n * @typedef {Object} SpraeConfig\n * @property {(expr: string) => (state: Object) => any} [compile] - Custom expression compiler\n * @property {string} [prefix] - Directive prefix (default: ':')\n * @property {<T>(value: T) => Signal<T>} [signal] - Signal factory\n * @property {(fn: () => void | (() => void)) => () => void} [effect] - Effect factory\n * @property {<T>(fn: () => T) => Signal<T>} [computed] - Computed factory\n * @property {<T>(fn: () => T) => T} [batch] - Batch function\n * @property {<T>(fn: () => T) => T} [untracked] - Untracked function\n * @property {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} [dir] - Directive initializer\n */\n\n/**\n * Configure sprae with custom signals, compiler, or prefix.\n * @param {SpraeConfig} config - Configuration options\n * @returns {void}\n */\nexport const use = (config) => (\n config.compile && (compile = config.compile),\n config.prefix && (prefix = config.prefix),\n config.signal && (signal = config.signal),\n config.effect && (effect = config.effect),\n config.computed && (computed = config.computed),\n config.batch && (batch = config.batch),\n config.untracked && (untracked = config.untracked),\n config.dir && (dir = config.dir)\n)\n\n/**\n * Applies modifiers to a function.\n * @param {Function & { target?: Element }} fn - Function to decorate\n * @param {string[]} mods - Modifier names with arguments (e.g., ['throttle-500', 'prevent'])\n * @returns {Function} Decorated function\n */\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n\n/** MutationObserver reference, set by sprae.start() */\nexport let mo = null\n/** Pauses MO during DOM mutations to prevent disposing managed elements */\nexport const mutate = (fn) => { mo?.disconnect(); fn(); mo?.observe(mo._root, { childList: true, subtree: true }) }\n\n/**\n * Auto-initializes sprae on dynamically added elements.\n * Uses MutationObserver to detect new DOM nodes and apply directives.\n *\n * @param {Element} [root=document.body] - Root element to observe\n * @param {Object} [values] - Initial state values\n * @returns {Object} The reactive state object\n *\n * @example\n * ```js\n * // Auto-init on page load\n * sprae.start(document.body, { count: 0 })\n * ```\n */\nexport const start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n }\n }\n for (const el of m.removedNodes) {\n // Only dispose if element is truly removed from document\n if (el.nodeType === 1 && !root.contains(el)) el[_dispose]?.()\n }\n }\n });\n mo._root = root\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n/**\n * @typedef {Object} FragmentLike\n * @property {Document} ownerDocument - The owner document\n * @property {Node[]} childNodes - Child nodes of the fragment\n * @property {DocumentFragment} content - The document fragment content\n * @property {() => void} remove - Remove the fragment from DOM\n * @property {(el: Node) => void} replaceWith - Replace the fragment with an element\n * @property {Attr[]} attributes - Attributes from the original template\n * @property {(name: string) => void} removeAttribute - Remove an attribute\n */\n\n/**\n * Creates a fragment holder from a template element with minimal API surface.\n * @param {HTMLTemplateElement | FragmentLike} tpl - Template element or existing fragment\n * @returns {FragmentLike} Fragment-like object\n */\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let doc = tpl.ownerDocument,\n content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = doc.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n ownerDocument: doc,\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n }\n}\n\n/**\n * Converts camelCase to kebab-case.\n * @param {string} str - String to convert\n * @returns {string} Kebab-case string\n */\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n/**\n * Sets or removes an attribute on an element.\n * @param {Element} el - Target element\n * @param {string} name - Attribute name\n * @param {string | boolean | null | undefined} v - Attribute value (null/false removes, true sets empty)\n * @returns {void}\n */\nconst camelcase = (str) => str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) :\n isCE(el) ? (el[camelcase(name)] = v) :\n el.setAttribute(name, v === true ? \"\" : v);\n\n/**\n * Converts class input to className string (like clsx/classnames).\n * @param {string | string[] | Record<string, boolean> | null | undefined} c - Class input\n * @returns {string} Space-separated class string\n */\nexport const clsx = (c) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => (v && s.push(k), s), [])\n).join(' ')\n\n/**\n * Throttles a function to run at most once per tick (or custom scheduler).\n * Fires on leading edge, then on trailing edge if called during throttle.\n * @template {Function} T\n * @param {T} fn - Function to throttle\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @returns {T} Throttled function\n */\n/** Makes a scheduler from ms delay, custom scheduler fn, or default microtask */\nconst sched = (ms) => typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask\n\nexport const throttle = (fn, ms) => {\n let _planned = 0, _depth = 0, arg, schedule = sched(ms);\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule(() => {\n let dirty = _planned > 1\n _planned = 0\n if (dirty) {\n if (++_depth > 50) { _depth = 0; console.error('\u2234 Reactive loop detected'); return }\n throttled(arg)\n } else _depth = 0\n });\n }\n return throttled;\n}\n\n/**\n * Debounces a function to run after a delay since the last call.\n * @template {Function} T\n * @param {T} fn - Function to debounce\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @param {boolean} [immediate=false] - Fire on leading edge instead of trailing\n * @returns {T} Debounced function\n */\nexport const debounce = (fn, ms, immediate) => {\n let schedule = sched(ms);\n return immediate\n ? ((_blocked) => (arg) => !_blocked && (fn(arg), _blocked = 1, schedule(() => _blocked = 0)))()\n : ((_count = 0) => (arg, _c = ++_count) => schedule(() => _c == _count && fn(arg)))()\n}\n\nexport * from './store.js';\n\nexport default sprae\n", "/**\n * @fileoverview Signals-powered reactive proxy store\n * @module sprae/store\n */\n\nimport { signal, computed, batch, untracked } from './core.js'\n\n/** Symbol for accessing the internal signals map */\nexport const _signals = Symbol('signals')\n\n/** Symbol for the change signal that tracks object keys or array length */\nexport const _change = Symbol('change')\n\n/** Symbol for list index/content bumps (swap, splice, index writes) */\nexport const _touch = Symbol('touch')\n\n/** Symbol for stashed setter on computed values */\nexport const _set = Symbol('set')\n\n/** Symbol for parent scope link */\nconst _parent = Symbol('parent')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n/**\n * Reactive store with signals backing.\n * @template T\n * @typedef {T & { [_signals]: Record<string | symbol, import('./core.js').Signal<any>> }} ReactiveStore\n */\n\n/**\n * Creates a reactive proxy store from an object or array.\n * Properties become signals for fine-grained reactivity.\n * Supports nested objects, arrays, computed getters, and methods.\n *\n * @template {Object} T\n * @param {T} values - Initial values object\n * @param {Object} [parent] - Parent scope for inheritance\n * @returns {ReactiveStore<T>} Reactive proxy store\n *\n * @example\n * const state = store({ count: 0, get doubled() { return this.count * 2 } })\n * state.count = 5 // triggers updates\n * state.doubled // 10 (computed)\n */\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals,\n }), {\n get: (_, k) => {\n if (k in signals) {\n // raw methods (no prototype) - bind to state for consistent `this`\n if (signals.hasOwnProperty(k) && typeof signals[k] === 'function' && !signals[k].prototype) return signals[k].bind(state)\n return (signals[k] ? signals[k].valueOf() : signals[k])\n }\n if (parent) {\n return parent[k]\n }\n return (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals).filter(k => k !== _parent)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n/**\n * Creates a reactive array store with lazy signal initialization.\n * Arrays can be large, so signals are created on-demand.\n * @param {any[]} values - Initial array values\n * @param {Object} [parent=globalThis] - Parent scope\n * @returns {ReactiveStore<any[]>} Reactive array proxy\n */\nconst list = (values, parent = globalThis) => {\n\n // init signals eagerly \u2014 shallow() is cheap (1 Proxy + 1 signal per object item)\n let signals = values.map(v => signal(shallow(v))),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n // batch: a single splice/push writes many index signals \u2014 notify subscribers once, not per index\n mut = fn => function () { isMut = true; let r; batch(() => r = fn.apply(this, arguments)); return r },\n\n length = signal(values.length),\n\n // _touch bumps notify keyed :each of index/content changes (swap, splice) in O(1)\n // instead of forcing :each to subscribe to all N index signals\n touch = signal(0),\n bump = () => { touch.value++ },\n\n // capture native array mutators before they're shadowed on signals[]\n asplice = signals.splice,\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_touch]: touch,\n [_signals]: signals,\n // patch mutators \u2014 `this` must be the list proxy so set traps fire reactively\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(function () { let r = asplice.apply(this, arguments); bump(); return r }),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // signals are eagerly initialized; null slots from .length extension default to undefined\n return (signals[k] ??= signal(undefined)).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // clean up tail directly \u2014 proxy delete per index is pure trap overhead\n for (let i = v; i < signals.length; i++) signals[i]?.[Symbol.dispose]?.()\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v, shallow), state.length = +k + 1\n\n // existing signal \u2014 bump for :each index tracking (swap)\n else if (signals[k]) {\n let s = signals[k], prev = s.peek?.() ?? s.valueOf()\n set(signals, k, v, shallow)\n if ((s.peek?.() ?? s.valueOf()) !== prev) bump()\n } else create(signals, k, v, shallow)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n return state\n}\n\n/**\n * Creates a signal for a property value.\n * Skips wrapping for untracked props (underscore prefix), existing signals, and functions.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - Property value\n */\nconst create = (signals, k, v, wrap = store) => (signals[k] = (k[0] == '_' || v?.peek || typeof v === 'function') ? v : signal(wrap(v)))\n\n/** Lightweight reactive wrapper for array items \u2014 avoids full store() per item. */\nconst shallow = (v) => {\n if (!v || typeof v !== 'object' || v.constructor !== Object) return v\n if (v[_change]) return v // already reactive (store or shallow proxy)\n // per-key version signals: writing one key notifies only its readers, not the whole item\n let sigs = {}, ver // ver tracks key set (adds/deletes), created on demand\n return new Proxy(v, {\n get: (t, k) => k === _signals ? t : k === _change ? (ver ??= signal(0)) : typeof k === 'symbol' ? t[k] : ((sigs[k] ??= signal(0)).value, t[k]),\n set: (t, k, val) => {\n if (t[k] !== val) {\n let fresh = !(k in t)\n t[k] = val\n sigs[k] && sigs[k].value++\n if (fresh && ver) ver.value++\n }\n return 1\n },\n has: () => true\n })\n}\n\n/**\n * Updates a signal value, handling arrays specially for efficient patching.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - New value\n */\nconst set = (signals, k, v, wrap = store) => {\n if (k[0] === '_' || typeof signals[k] === 'function') return (signals[k] = v)\n let _s = signals[k], _v = _s.peek?.() ?? _s\n if (v === _v) return\n // stashed _set for value with getter/setter\n if (_s[_set]) return _s[_set](v)\n // patch store array in-place to preserve identity (avoids reactive loops when an effect reads + writes same prop)\n if (Array.isArray(v) && Array.isArray(_v)) {\n if (_change in _v) untracked(() => batch(() => { for (let i = 0; i < v.length; i++) _v[i] = v[i]; _v.length = v.length }))\n else _s.value = _change in v ? v : list(v)\n }\n else _s.value = wrap(v)\n}\n\nexport default store\n", "/**\n * @fileoverview Minimal signals implementation (preact-signals compatible)\n * @module sprae/signal\n */\n\n/** @type {import('./core.js').EffectFn | null} */\nlet current\n\nlet depth = 0\n\n/** @type {Set<import('./core.js').EffectFn> | null} */\nlet batched;\n\n// class keeps instances light: prototype accessors share one shape, subscribers Set allocates lazily\nclass Signal {\n constructor(v) { this.v = v; this.o = null }\n get value() {\n if (current) current.deps.add((this.o ??= new Set).add(current))\n return this.v\n }\n set value(val) {\n if (val === this.v) return\n this.v = val\n if (this.o) for (let sub of this.o) batched ? batched.add(sub) : sub() // notify effects\n }\n peek() { return this.v }\n valueOf() { return this.value }\n toString() { return this.value }\n toJSON() { return this.value }\n}\n\n/**\n * Creates a reactive signal.\n * @template T\n * @param {T} v - Initial value\n * @returns {import('./core.js').Signal<T>}\n */\nexport const signal = (v) => new Signal(v)\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @param {() => void | (() => void)} fn - Effect function, may return cleanup\n * @returns {() => void} Dispose function\n */\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n if (!fn) return // disposed during batch flush\n let tmp = _teardown;\n _teardown = null;\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 50) {\n depth--; current = prev;\n // dispose: unsubscribe from all deps so this effect never fires again\n _teardown = fn = _fx.fn = null; for (let dep of _deps) dep.delete(_fx); _deps.clear()\n console.error('\u2234 Reactive loop detected'); return\n }\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); _teardown = fn = _fx.fn = null; for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\n// a computed is a signal with a lazy producer effect keeping it current\nclass Computed extends Signal {\n constructor(fn) { super(); this.fn = fn; this.e = null }\n get value() {\n this.e ||= effect(() => super.value = this.fn())\n return super.value\n }\n}\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @param {() => T} fn - Computation function\n * @returns {import('./core.js').Signal<T>}\n */\nexport const computed = (fn) => new Computed(fn)\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @param {() => T} fn - Function containing updates\n * @returns {T}\n */\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\n/**\n * Runs a function without tracking dependencies.\n * @template T\n * @param {() => T} fn - Function to run untracked\n * @returns {T}\n */\nexport const untracked = (fn, _prev) => {\n _prev = current, current = null\n try { return fn() } finally { current = _prev }\n}\n", "import sprae, { throttle, _on, _off, _state, frag, mutate } from '../core.js';\n\n/**\n * Conditional directive - shows/hides element based on condition.\n * Works with :else and :else :if for branching.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n let _holder, _el\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n mutate(() => el.replaceWith(_holder = el.ownerDocument.createTextNode('')))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n _holder._match = null\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _holder._match) {\n mutate(() => {\n _holder._match?.[0].remove()\n _holder._match?.[0][_off]?.()\n if (_holder._match = match) {\n _holder.before(_holder._match[0].content || _holder._match[0])\n // check if element needs initial sprae (null) vs just re-enabling (_on)\n !_holder._match[0][_state] ? (delete _holder._match[0][_state], sprae(_holder._match[0], state)) : _holder._match[0][_on]?.()\n }\n })\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n let cb = value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n cb[_off] = () => { _el._holder._match?.[0][_off]?.(); _el._holder._match = null }\n return cb\n}\n\n/**\n * Else directive - conditional branch following :if (`:else` or `:else :if=\"cond\"`).\n * Shares the holder clause machinery above.\n * @param {Element | HTMLTemplateElement} el - Element with directive\n * @returns {() => void} Update function\n */\nexport const _else = (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\n/**\n * Text directive - sets textContent reactively.\n * Preserves caret/selection position across updates.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @returns {(v: any) => void} Update function\n */\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => {\n v = typeof v === 'function' ? v(el.textContent) : v\n v = v == null ? \"\" : \"\" + v\n let cur = el.textContent\n if (cur === v) return\n\n // append-only: reuse text node, skip caret save/restore\n let node = el.firstChild\n if (node && v.startsWith(cur)) { node.appendData(v.slice(cur.length)); return }\n\n // caret preservation only matters when this element holds focus \u2014\n // calling getSelection() during DOM mutations forces sync layout in Chromium (O(n\u00B2) for lists)\n let root = el.ownerDocument, active = root.activeElement\n let s = active && (active === el || el.contains(active)) ? root.getSelection?.() : null\n let off = s?.rangeCount && el.contains(s.anchorNode) ? s.getRangeAt(0).startOffset : -1\n\n el.textContent = v\n\n // restore caret\n if (off >= 0 && el.firstChild) {\n let pos = Math.min(off, el.firstChild.textContent.length)\n let r = new Range()\n r.setStart(el.firstChild, pos)\n r.collapse(true)\n s.removeAllRanges()\n s.addRange(r)\n }\n }\n)\n", "import { clsx } from \"../core.js\";\n\n/**\n * Class directive - manages CSS classes reactively.\n * Supports strings, arrays, and objects (like clsx/classnames).\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | string[] | Record<string, boolean>) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _cur = null, _new, _prev = null\n let clearAttr = () => !el.classList.length && el.removeAttribute('class')\n\n return (v) => {\n v = typeof v === 'function' ? v(el.className) : v\n\n if (v?.constructor === Object) {\n _prev = null\n if (_cur) for (let c of _cur) if (!v[c]) el.classList.remove(c), _cur.delete(c)\n if (!_cur?.size) _cur = null\n for (let c in v) if (v[c] && !_cur?.has(c)) el.classList.add(c), (_cur ||= new Set).add(c)\n if (!_cur) clearAttr()\n return\n }\n\n v = clsx(v)\n if (v === _prev) return\n _prev = v\n\n _new = null\n if (v) for (let c of v.split(' ')) c && (_new ||= new Set).add(c)\n if (_cur) for (let c of _cur) if (!_new?.has(c)) el.classList.remove(c)\n if (_new) for (let c of _new) if (!_cur?.has(c)) el.classList.add(c)\n if (!_new) clearAttr()\n _cur = _new\n }\n}\n", "import { attr } from \"../core.js\";\n\n/**\n * Style directive - sets inline styles reactively.\n * Accepts string or object. Preserves static styles.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | Record<string, string> | ((style: CSSStyleDeclaration) => any)) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _static;\n\n return v => {\n if (_static === undefined) _static = el.getAttribute(\"style\") ?? \"\"\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static ? _static + '; ' + v : v)\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] >= 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "/**\n * Effect directive - runs side effects.\n * Calls function result if expression evaluates to a function.\n * @returns {(fn: any) => any} Update function\n */\nexport default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, _dispose } from \"../core.js\";\n\n/**\n * Value directive - one-way binding (state \u2192 DOM).\n * Sets element value/checked/selected from state.\n * For write-back (DOM \u2192 state), use :change directive.\n *\n * @param {HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement} el - Form element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n // select elements need children spraed first (for :each options)\n if (el.type?.startsWith('select')) sprae(el, state)\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n _from = el.selectionStart,\n _to = el.selectionEnd,\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.checked = el.value === value, attr(el, 'checked', el.checked || null)\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) value.some(v => v == o.value) ? o.setAttribute('selected', '') : o.removeAttribute('selected')\n } :\n (value) => (el.value = value)\n}\n", "import { parse } from \"../core.js\"\n\n/**\n * Creates a setter function for assigning a value to a state path.\n * @param {string} expr - Expression to assign to (e.g., \"x\" or \"refs.el\")\n * @returns {(target: Object, value: any) => void} Setter function\n */\nconst setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n target.__ = value; _set(target), delete target.__\n}\n\n/**\n * Ref directive - stores element reference in state or calls callback with element.\n *\n * :ref=\"x\" \u2192 state.x = el\n * :ref=\"refs.el\" \u2192 state.refs.el = el\n * :ref=\"el => setup(el)\" \u2192 calls callback with element\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Variable name, path, or callback expression\n */\nexport default (el, state, expr) => {\n let result = parse(expr).call(el, state)\n if (typeof result === 'function') result(el)\n else setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, frag, _state, _signals, signal, computed } from '../core.js'\nimport { _set } from '../store.js'\n\n/**\n * Scope directive - creates a child scope with local state.\n * Properties merge into a new scope inheriting from parent.\n */\nexport default (el, rootState) => {\n let state = el[_state] = store({}, rootState), init = false\n\n let holder, _frag = el.content && frag(el)\n if (_frag) el.replaceWith(holder = el.ownerDocument.createTextNode(''))\n\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n if (values !== state) {\n for (let k in values) {\n let d = Object.getOwnPropertyDescriptor(values, k)\n // getter \u2192 computed signal (same pattern as store.js:122-124)\n if (d?.get) { (state[_signals][k] = computed(d.get.bind(state)))[_set] = d.set?.bind(state); continue }\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n if (k in state[_signals]) state[k] = v\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n return !init && (init = true, !holder && (delete el[_state]), untracked(() => (holder?.before(_frag.content || el), sprae(_frag || el, state))))\n }\n}\n", "import sprae, { parse, _state, _off, effect, untracked, _change, _touch, _signals, frag, throttle, mutate } from \"../core.js\"\n\n// Row scope proxy \u2014 positional rows (s.c = source array) read item live via c[i], keyed rows hold direct ref s.r\nconst rowHandler = {\n get: (s, k) => k === s.v ? (s.c ? s.c[s.i] : s.r) : k === s.k ? (s.o ? s.o[s.i] : s.i) : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.c ? s.c[s.i] = v : s.r = v) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\n\n\n/**\n * Each directive - renders list items from array/object/number.\n * Syntax: `:each=\"item in items\"` or `:each=\"(item, idx) of items\"`\n *\n * Keyed by object identity for arrays of objects (including store arrays).\n * Primitives use positional (index-based) mode.\n */\nexport default (tpl, state, expr) => {\n // first standalone `in`/`of` splits the expression \u2014 `\\b` on both sides so `includes`, `index`, `typeof` etc. in rhs don't match\n const [, lhs, rhs] = expr.match(/^(.*?)\\b(?:in|of)\\b(.*)$/s) || []\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/)\n\n let doc = tpl.ownerDocument\n let holder = tpl._eachHolder || (tpl._eachHolder = doc.createTextNode(\"\"))\n let rowMap = new Map, rows = [], items, keys, cur, keyed = false\n\n // removal always evicts from rowMap \u2014 every path (keyed diff, positional shrink, clear) must, or rows leak\n let rm = r => { rowMap.delete(r.scope.r); r.el.remove(); r.el[Symbol.dispose]?.() }\n\n // _di tracks current DOM index so swap/reorder only touches actually-moved rows\n // scope shape is uniform (keyed: r, positional: c/o) \u2014 monomorphic for the proxy traps\n let mkrow = (r, c, i) => {\n let scope = { p: state, v: itemVar, k: idxVar, r, c, i, o: keys, l: null }\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true)\n return { el, scope, proxy: new Proxy(scope, rowHandler), node: el.content || el, _di: i }\n }\n\n let insert = pending => {\n if (!pending.length) return\n let f = pending.length > 1 ? doc.createDocumentFragment() : null\n for (let r of pending) f ? f.appendChild(r.node) : holder.before(r.node)\n if (f) holder.before(f)\n // element rows pair with tpl as clone master: first row records the directive scan, rest replay it\n for (let r of pending) sprae(r.el, r.proxy, tpl.content ? undefined : tpl)\n }\n\n // untracked: update reads item signals (src[i]) but must not subscribe the :each effect to them \u2014\n // it re-runs via _change/_touch only, else every index write re-notifies it (O(N) per splice)\n let update = throttle(() => untracked(() => mutate(() => {\n let src = items, newl = src.length, prevl = rows.length, lenChanged = newl !== prevl\n\n // detect keyed: array of objects (store items are shallow proxies \u2014 keyed by proxy identity)\n keyed = false\n for (let i = 0; i < newl; i++) {\n if (src[i] != null) { keyed = typeof src[i] === 'object'; break }\n }\n\n if (keyed && prevl) {\n let newRows = [], pending = [], seen = new Set(), moved = false, misplaced = false\n\n for (let i = 0; i < newl; i++) {\n let id = src[i]\n if (id != null && typeof id === 'object') {\n if (seen.has(id)) return // intermediate swap \u2014 retry after next index write\n seen.add(id)\n }\n let row = rowMap.get(id)\n if (row) {\n // index-only shifts from remove/append keep DOM order \u2014 reorder only for same-length permutes (swap)\n if (!lenChanged && row.scope.i !== i) moved = true\n // insert() appends new rows at the tail \u2014 a reused row after a new one means wrong placement\n if (pending.length) misplaced = true\n row.scope.i = i; row.scope.r = id; row.scope.o = keys\n } else {\n row = mkrow(id, null, i)\n rowMap.set(id, row)\n pending.push(row)\n }\n newRows.push(row)\n }\n\n for (let [id, row] of rowMap) if (!seen.has(id)) rm(row)\n\n insert(pending)\n\n if (misplaced) {\n // new rows sit at the tail \u2014 sweep everything into list order\n let next = holder\n for (let i = newRows.length - 1; i >= 0; i--) {\n let n = newRows[i].node\n if (n.nextSibling !== next) next.before(n)\n next = n\n newRows[i]._di = i\n }\n }\n else if (moved) {\n // collect rows whose DOM position no longer matches their list index\n let fix = []\n for (let i = 0; i < newRows.length; i++) {\n let row = newRows[i]\n if (row._di !== i) fix.push(row)\n row._di = i\n }\n // 2-node swap fast path (common case: JFB swap rows)\n if (fix.length === 2) {\n let a = fix[0].node, b = fix[1].node, t = doc.createTextNode('')\n a.replaceWith(t); b.replaceWith(a); t.replaceWith(b)\n } else {\n // general reorder: backward sweep, only move rows that aren't already in place\n let next = holder\n for (let i = newRows.length - 1; i >= 0; i--) {\n let n = newRows[i].node\n if (n.nextSibling !== next) next.before(n)\n next = n\n }\n }\n } else for (let i = 0; i < newRows.length; i++) newRows[i]._di = i\n\n rows = newRows\n } else {\n // --- POSITIONAL ---\n if (prevl && cur !== src) {\n for (let r of rows) rm(r)\n rows.length = 0; prevl = 0; rowMap.clear()\n }\n cur = src\n\n if (newl < prevl) {\n for (let i = newl; i < prevl; i++) rm(rows[i])\n rows.length = newl\n }\n\n for (let i = 0; i < Math.min(prevl, newl); i++) {\n rows[i].scope.c = src\n if (keys) rows[i].scope.o = keys\n }\n\n if (newl > prevl) {\n let pending = []\n for (let i = prevl; i < newl; i++) {\n let row = keyed ? mkrow(src[i], null, i) : mkrow(null, src, i)\n rows.push(row)\n if (keyed) rowMap.set(src[i], row)\n pending.push(row)\n }\n insert(pending)\n }\n }\n })))\n\n if (tpl.parentNode) mutate(() => tpl.replaceWith(holder))\n tpl[_state] = null\n\n let cb = value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n let off = effect(() => {\n items[_change]?.value\n items[_touch] // O(1) subscribe to index/content changes (swap, splice) on list stores\n update()\n })\n return () => off()\n }\n cb.eval = parse(rhs)\n cb[_off] = () => { for (let r of rows) rm(r); rows.length = 0; rowMap.clear() }\n return cb\n}\n", "import { attr, isCE } from \"../core.js\";\n\n/**\n * Default attribute directive - sets any attribute value.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Attribute name\n * @returns {(v: any) => void} Update function\n */\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' && !isCE(el) ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase, isCE } from \"../core.js\";\n\n/**\n * Spread directive - sets multiple attributes from object.\n * Keys are converted from camelCase to kebab-case.\n * @param {Element} target - Target element\n * @returns {(value: Record<string, any>) => void} Update function\n */\nexport default (target) => value => { let ce = isCE(target); for (let key in value) attr(target, ce ? key : dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\n/**\n * Event directive - attaches event listeners with modifiers.\n * Syntax: `:onclick=\"handler\"` or `:onclick.prevent.stop=\"handler\"`\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Event name with modifiers (e.g., 'onclick.prevent')\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n trigger[Symbol.dispose]?.()\n }\n }\n}\n", "import { _dispose, parse, decorate } from \"../core.js\"\n\n/**\n * Sequence directive - chains event handlers.\n * Syntax: `:onclick..keyup.enter=\"handler\"` - click triggers, then waits for Enter.\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} names - Chained event names separated by `..`\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n const evaluate = parse(expr).bind(el)\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import sprae, { untracked, frag, _dispose, _state } from \"../core.js\"\n\nconst isTemplate = v => !!v?.content\n\n/**\n * HTML directive - sets innerHTML and initializes nested directives.\n * Supports templates for fragment insertion.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(v: string | HTMLTemplateElement | ((html: string) => string)) => void | (() => void)} Update function\n */\nexport default (el, state) => {\n // <template :html=\"a\"/> - fragment case: use placeholder + frag\n if (el.content) {\n let _el, html = el.innerHTML,\n doc = el.ownerDocument,\n holder = el._holder\n\n if (!holder) el.replaceWith(holder = doc.createTextNode(''))\n\n return v => {\n if (typeof v === 'function') v = v(html)\n\n // :if case: remove current content from DOM\n if (el._holder) el.remove(), el.content.replaceChildren()\n _el?.[_dispose]?.()\n _el?.remove()\n\n if (v != null && v !== '') {\n _el = isTemplate(v)\n ? (html = v.innerHTML, frag(v))\n : frag((_el = doc.createElement('template'), _el.innerHTML = html = v, _el))\n\n untracked(() => sprae(_el, state))\n\n holder.before(_el.content)\n\n // :if case: update childNodes in-place for remove() closure\n if (el._holder) el.childNodes.splice(0, Infinity, ..._el.childNodes)\n\n return _el[_dispose]\n }\n else if (el._holder) el.childNodes.length = 0, html = ''\n }\n }\n\n return v => (\n v = typeof v === 'function' ? v(el.innerHTML) : v,\n isTemplate(v) ? el.replaceChildren(v.content.cloneNode(true)) : (el.innerHTML = v == null ? \"\" : v),\n el[_state] &&= null,\n untracked(() => sprae(el, state)),\n el[_dispose]\n )\n}\n", "/**\n * Portal directive - teleports element to another container.\n * Value can be selector string, element, or falsy to return home.\n * @param {Element} el - Element to teleport\n * @param {Object} state - State object\n * @param {string} expr - Expression\n * @returns {(value: string | Element | null | false) => void} Update function\n */\nexport default (el, state, expr) => {\n const doc = el.ownerDocument\n const comment = doc.createComment(':portal')\n let currentTarget = null\n\n // Insert placeholder before element\n el.before(comment)\n\n return (value) => {\n const root = el.getRootNode()\n const target = typeof value === 'string'\n ? (root.querySelector?.(value) || doc.querySelector(value))\n : value?.nodeType === 1 ? value\n : value ? doc.body : null\n\n if (target === currentTarget) return\n\n if (target) target.appendChild(el)\n else comment.after(el)\n\n currentTarget = target\n\n return () => { currentTarget && (comment.after(el), currentTarget = null) }\n }\n}\n", "/**\n * Hidden directive - toggles the hidden attribute.\n * @param {Element} el - Target element\n * @returns {(value: any) => boolean} Update function\n */\nexport default (el) => (value) => el.hidden = !!value\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Mount directive - lifecycle observer.\n * Runs once on connect. Function form receives element, can return cleanup.\n * Statement form runs directly.\n *\n * :mount=\"console.log('connected')\"\n * :mount=\"el => (setup(el), () => cleanup(el))\"\n * :mount=\"el => ref = el\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n let cleanup\n\n const trigger = decorate(Object.assign(() => {\n const result = evaluate(state, fn => typeof fn === 'function' ? fn(el) : fn)\n if (typeof result === 'function') cleanup = result\n }, { target: el }), mods)\n\n trigger()\n\n return {\n [_dispose]() {\n cleanup?.()\n cleanup = null\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Change directive - normalized input write-back observer.\n * Handles type detection, coercion, caret preservation.\n *\n * :change=\"v => x = v\"\n * :change.debounce-300=\"v => query = v\"\n *\n * @param {Element} el - Form element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression (receives coerced value)\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n // coerce value from element based on input type\n const coerce =\n el.type === 'checkbox' ? () => el.checked :\n el.type === 'select-multiple' ? () => [...el.selectedOptions].map(o => o.value) :\n /^(date|time|month|week)/.test(el.type) ? () => el.value :\n () => el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber\n\n const handler = decorate(Object.assign(() => {\n evaluate(state, fn => typeof fn === 'function' ? fn(coerce()) : fn)\n }, { target: el }), mods)\n\n el.addEventListener('input', handler)\n el.addEventListener('change', handler)\n\n return {\n [_dispose]() {\n el.removeEventListener('input', handler)\n el.removeEventListener('change', handler)\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Intersect directive - IntersectionObserver wrapper.\n * Statement form fires on enter. Function form receives entry for full control.\n *\n * :intersect=\"visible = true\"\n * :intersect.once=\"loadImage()\"\n * :intersect=\"entry => visible = entry.isIntersecting\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst intersect = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n let once = mods.includes('once')\n\n const trigger = decorate(Object.assign((entry) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(entry) : fn)\n }, { target: el }), mods)\n\n const io = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n trigger(entry)\n if (once) io.disconnect()\n }\n }\n })\n\n io.observe(el)\n\n return {\n [_dispose]() { io.disconnect() }\n }\n}\n\nintersect.observer = true\nexport default intersect\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Resize directive - ResizeObserver wrapper.\n * Function form receives {width, height, entry} object.\n *\n * :resize=\"({width, height}) => cols = Math.floor(width / 200)\"\n * :resize.throttle-100=\"({width}) => narrow = width < 600\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst resize = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n const trigger = decorate(Object.assign((size) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(size) : fn)\n }, { target: el }), mods)\n\n const ro = new ResizeObserver(entries => {\n for (const entry of entries) {\n const rect = entry.contentRect\n trigger({ width: rect.width, height: rect.height, entry })\n }\n })\n\n ro.observe(el)\n\n return {\n [_dispose]() { ro.disconnect() }\n }\n}\n\nresize.observer = true\nexport default resize\n", "/**\n * @fileoverview Sprae - lightweight reactive HTML templating library\n * @module sprae\n */\n\nimport store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add, start, isCE } from './core.js';\n\nimport _if, { _else } from \"./directive/if.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\nimport _html from \"./directive/html.js\";\nimport _portal from \"./directive/portal.js\";\nimport _hidden from \"./directive/hidden.js\";\nimport _mount from \"./directive/mount.js\";\nimport _change from \"./directive/change.js\";\nimport _intersect from \"./directive/intersect.js\";\nimport _resize from \"./directive/resize.js\";\n\n\n// mark observers: they handle own modifiers, bypass reactive plumbing\n_mount.observer = _change.observer = true\n\nObject.assign(directive, {\n _: _default,\n '': _spread,\n class: _class,\n text: _text,\n html: _html,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each,\n portal: _portal,\n hidden: _hidden,\n mount: _mount,\n change: _change,\n intersect: _intersect,\n resize: _resize,\n})\n\n\n/**\n * Directive initializer with modifiers support.\n * @param {Element} target - Target element\n * @param {string} name - Directive name with modifiers (e.g., 'onclick.throttle-500')\n * @param {string} expr - Expression string\n * @param {Object} state - Reactive state object\n * @returns {() => (() => void) | void} Initializer function that returns a disposer\n */\nconst dir = (target, dirName, mods, expr, state) => {\n let create = directive[dirName] || directive._\n let hasMods = mods.length > 0\n\n return () => {\n let el = target, update, change, trigger, count = 0\n\n if (hasMods) {\n // modifiers can retarget the update or schedule it, so they keep the trigger indirection\n change = signal(0)\n trigger = decorate(Object.assign(() => change.value++, { target }), mods.slice())\n el = trigger.target ?? target\n }\n\n update = create(el, state, expr, dirName)\n\n if (!update?.call) return update?.[_dispose]\n\n let evaluate = update.eval ?? parse(expr),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n // use element's own state for expression evaluation, unless it's a custom element\n // (custom elements: directives are parent prop setters, must evaluate against parent state)\n if (!isCE(el)) state = el[_state] ?? state\n\n let off = hasMods ? effect(() => {\n change.value == count ? trigger() : (count = change.value, _out = evaluate.call(el, state, update))\n return out\n }) : effect(() => (_out = evaluate.call(el, state, update), out))\n if (!(_state in el)) return off\n let _d = 0\n return () => { if (_d) return; _d = 1; off(); update[_off] ? update[_off]() : el[_dispose]?.() }\n }\n}\n\n// per-name parse memo: the same few attr names repeat across every :each row\nconst recipes = {}\nconst recipe = (name) => recipes[name] ??=\n name.includes('..') ? 0 : // sequence marker\n name.split(':').map(str => {\n let [dirName, ...mods] = str.split('.')\n return { str, dirName, mods, on: str.startsWith('on') }\n })\n\n// Parses time string to ms: 100, 100ms, 1s, 1m\nconst parseTime = (t) => !t ? 0 : typeof t === 'number' ? t :\n (([, n, u] = t.match(/^(\\d+)(ms|s|m)?$/) || []) => (n = +n, u === 's' ? n * 1000 : u === 'm' ? n * 60000 : n))()\n\n// Creates scheduler from time/keyword (idle, raf, tick, or ms)\nconst scheduler = (t) =>\n t === 'idle' ? requestIdleCallback :\n t === 'raf' ? requestAnimationFrame :\n !t || t === 'tick' ? queueMicrotask :\n (fn) => setTimeout(fn, parseTime(t))\n\n// Built-in modifiers for timing, targeting, and event handling\nObject.assign(modifier, {\n /**\n * Delays callback by interval since last call (trailing edge).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm. Add -immediate for leading edge.\n * Examples: .debounce, .debounce-100, .debounce-1s, .debounce-raf, .debounce-idle, .debounce-100-immediate\n */\n debounce: (fn, a, b) => debounce(fn, scheduler(a === 'immediate' ? b : a), a === 'immediate' || b === 'immediate'),\n /**\n * Limits callback rate to interval (leading + trailing edges).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm.\n * Examples: .throttle, .throttle-100, .throttle-1s, .throttle-raf, .throttle-idle\n */\n throttle: (fn, a) => throttle(fn, scheduler(a)),\n /** Runs callback after delay. Supports: tick (default), raf, idle, N, Nms, Ns, Nm. */\n delay: (fn, a) => ((sched = scheduler(a)) => (e) => sched(() => fn(e)))(),\n\n /** Calls handler only once. */\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n /** Attaches event listener to window. */\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n /** Attaches event listener to document. */\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n /** Attaches event listener to document root element (<html>). */\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n /** Attaches event listener to body. */\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n /** Attaches event listener to parent element. */\n parent: fn => (fn.target = fn.target.parentNode, fn),\n /** Triggers only when event target is the element itself. */\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n /** Triggers when event is outside the element. Ignores drag-out (pointerdown inside, pointerup outside). */\n away: (fn, _pd) => {\n let doc = fn.target.ownerDocument, pdHandler = e => _pd = e.target, _skip = doc.currentEvent || doc.defaultView?.event\n doc.addEventListener('pointerdown', pdHandler, true)\n return Object.assign(\n (e) => e !== _skip && !fn.target.contains(e.type === 'click' ? _pd ?? e.target : e.target) && e.target.isConnected && fn(e),\n { target: doc, [_dispose]: () => doc.removeEventListener('pointerdown', pdHandler, true) }\n )\n },\n\n /** Calls preventDefault() before handler. */\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n /** Calls stopPropagation() or stopImmediatePropagation() (with -immediate). */\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n /** Sets passive option for event listener. */\n passive: fn => (fn.passive = true, fn),\n /** Sets capture option for event listener. */\n capture: fn => (fn.capture = true, fn),\n})\n/** Alias for .away modifier */\nmodifier.outside = modifier.away\n/** Shortcuts for .delay-tick / .delay-raf */\nmodifier.tick = fn => modifier.delay(fn)\nmodifier.raf = fn => modifier.delay(fn, 'raf')\n\n/**\n * Key testers for keyboard event modifiers.\n * @type {Record<string, (e: KeyboardEvent) => boolean>}\n */\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key?.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key?.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// match key by name, or by e.key (case-insensitive), or by keyCode (digits)\nconst keyMatch = (k, e) => keys[k]?.(e) || e.key?.toLowerCase() === k || e.keyCode == k\n\n// Augment modifiers with key testers (e.g., .enter, .ctrl, .ctrl-a, .ctrl-65)\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keyMatch(a, e)) && (!b || keyMatch(b, e)) && fn(e)\n\n\n// Checks for first-level semicolons (statement vs expression)\nconst hasSemi = s => {\n let d = 0, q = '', esc = 0\n for (let ch of s) {\n if (q) {\n if (esc) esc = 0\n else if (ch === '\\\\') esc = 1\n else if (ch === q) q = ''\n continue\n }\n if (ch === ';' && !d) return true\n if (ch === '{') d++\n else if (ch === '}') d--\n else if (ch === '\"' || ch === \"'\" || ch === '`') q = ch\n }\n return false\n}\n\n// Configure sprae with default compiler and signals\nuse({\n\n// Default compiler wraps expression for new Function\n compile: expr => {\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(expr));\n // first-level semicolons - no return\n else if (hasSemi(expr));\n else expr = `return ${expr}`\n // async expression\n if (/\\bawait\\s/.test(expr)) expr = `return (async()=>{${expr}})()`\n return sprae.constructor(`with(arguments[0]){${expr}}`)\n },\n // these 2 exceptions might look inconsistent, but arguably that's the cleanest way to avoid coupling\n dir: (el, name, expr, state) => {\n let segs = recipe(name)\n // sequences: handle own modifiers, return dispose\n if (!segs) return () => _seq(el, state, expr, name)[_dispose]\n return segs.reduce((prev, seg) => {\n // events and observers handle own modifiers, return dispose\n let obs = directive[seg.dirName]\n let start = seg.on ? () => _event(el, state, expr, seg.str)[_dispose]\n : obs?.observer ? () => obs(el, state, expr, seg.str)[_dispose]\n : dir(el, seg.dirName, seg.mods, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// Expose for runtime configuration\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n/**\n * Disposes a spraed element, cleaning up all effects and state.\n * @param {Element} el - Element to dispose\n */\nconst dispose = sprae.dispose = (el) => el[_dispose]?.()\n\n\nsprae.start = start\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use, throttle, debounce, dispose }\n", "// Pratt parser core + operator registry + compile\n// Character codes\nconst SPACE = 32;\n\n// current string, index\nexport let idx, cur,\n\n // parse input string to AST\n parse = s => (idx = 0, cur = s, parse.newline = false, s = expr(), cur[idx] ? err() : s || ''),\n\n // display error with context\n err = (msg = 'Unexpected token', at = idx,\n lines = cur.slice(0, at).split('\\n'),\n last = lines.pop(),\n before = cur.slice(Math.max(0, at - 40), at),\n ptr = '\\u032D',\n chr = (cur[at] || ' ') + ptr,\n after = cur.slice(at + 1, at + 20)\n ) => {\n throw SyntaxError(`${msg} at ${lines.length + 1}:${last.length + 1}\\n${(cur[at-41]!=='\\n' ? '' : '') +before}${chr}${after}`)\n },\n\n // attach location to node (returns node for chaining)\n loc = (node, at = idx) => (Array.isArray(node) && (node.loc = at), node),\n\n // advance until condition meets\n next = (is, from = idx, l) => {\n while (l = is(cur.charCodeAt(idx))) idx += l;\n return cur.slice(from, idx);\n },\n\n // advance n characters\n skip = (n=1) => cur[idx+=n],\n\n // set position (for backtracking)\n seek = n => idx = n,\n\n // a + b - c\n expr = (p = 0, end) => {\n let cc, token, newNode, fn, nl;\n if (end) parse.asi && (parse.newline = false);\n\n while (\n (cc = parse.space()) &&\n (nl = parse.newline, 1) &&\n cc !== end &&\n (newNode =\n ((fn = lookup[cc]) && fn(token, p)) ??\n (token && nl && parse.asi?.(token, p, expr)) ??\n (!token && next(parse.id))\n )\n ) token = newNode;\n\n if (end) cc == end ? idx++ : err('Unclosed ' + String.fromCharCode(end - (end > 42 ? 2 : 1)));\n\n return token;\n },\n\n // skip space chars, return first non-space character\n space = parse.space = (cc, from = idx) => {\n while ((cc = cur.charCodeAt(idx)) <= SPACE) {\n if (parse.asi && cc === 10) parse.newline = true\n idx++\n }\n return cc\n },\n\n // peek at next non-space char without modifying idx\n peek = (from = idx) => { while (cur.charCodeAt(from) <= SPACE) from++; return cur.charCodeAt(from); },\n\n // is char an id?\n id = parse.id = c =>\n (c >= 48 && c <= 57) ||\n (c >= 65 && c <= 90) ||\n (c >= 97 && c <= 122) ||\n c == 36 || c == 95 ||\n (c >= 192 && c != 215 && c != 247),\n\n // check if word matches at current position\n word = (w, l = w.length) => cur.substr(idx, l) === w && !parse.id(cur.charCodeAt(idx + l)),\n\n // parse (...) group\n parens = () => (skip(), expr(0, 41)),\n\n // operator lookup table\n lookup = [],\n\n // precedence registry - features register via token(), others can read\n prec = {},\n\n // create operator checker/mapper - for symbols and special cases\n // For prefix word operators, prefer keyword() from block.js\n token = (\n op,\n p = SPACE,\n map,\n c = op.charCodeAt(0),\n l = op.length,\n prev = lookup[c],\n word = op.toUpperCase() !== op,\n matched, r\n ) => (p = prec[op] = !prev && prec[op] || p, lookup[c] = (a, curPrec, curOp, from = idx) =>\n (matched = curOp,\n (curOp ?\n op == curOp :\n (l < 2 || (op.charCodeAt(1) === cur.charCodeAt(idx + 1) && (l < 3 || cur.substr(idx, l) == op))) && (!word || !parse.id(cur.charCodeAt(idx + l))) && (matched = curOp = op)\n ) &&\n curPrec < p &&\n (idx += l, (r = map(a)) ? loc(r, from) : (idx = from, matched = 0, !word && !prev && err()), r)\n ) ||\n prev?.(a, curPrec, matched)),\n\n binary = (op, p, right = false) => token(op, p, a => a && (b => b && [op, a, b])(expr(p - (right ? .5 : 0)))),\n\n unary = (op, p, post) => token(op, p, a => post ? (a && [op, a]) : (!a && (a = expr(p - .5)) && [op, a])),\n\n literal = (op, val) => token(op, 200, a => !a && [, val]),\n\n nary = (op, p, right) =>\n token(op, p,\n (a, b) => (\n b = expr(p - (right ? .5 : 0)),\n (\n (a?.[0] !== op) && (a = [op, a || null]),\n b?.[0] === op ? a.push(...b.slice(1)) : a.push(b || null),\n a\n ))\n )\n ,\n\n group = (op, p) => token(op[0], p, a => (!a && [op, expr(0, op.charCodeAt(1)) || null])),\n\n access = (op, p) => token(op[0], p, a => (a && [op, a, expr(0, op.charCodeAt(1)) || null]));\n\n// === Compile: AST \u2192 Evaluator ===\n\n// Operator registry\nexport const operators = {};\n\n// Register an operator (chainable for overrides)\nexport const operator = (op, fn, prev = operators[op]) =>\n (operators[op] = (...args) => fn(...args) || prev?.(...args));\n\n// Compile AST to evaluator function\n// Note: [, value] serializes to [null, value] in JSON, both forms accepted\nexport const compile = node => (\n !Array.isArray(node) ? (node === undefined ? () => undefined : ctx => ctx?.[node]) :\n node[0] == null ? (v => () => v)(node[1]) : // == catches both undefined and null\n operators[node[0]]?.(...node.slice(1)) ?? err(`Unknown operator: ${node[0]}`, node?.loc)\n);\n\nexport default parse;\n", "/**\n * Numbers with configurable prefix notation\n *\n * Configurable via parse.number: { '0x': 16, '0b': 2, '0o': 8 }\n */\nimport { parse, lookup, next, err, skip, idx, cur } from '../parse.js';\n\nconst PERIOD = 46, _0 = 48, _9 = 57, _E = 69, _e = 101, PLUS = 43, MINUS = 45, UNDERSCORE = 95, _n = 110;\nconst _a = 97, _f = 102, _A = 65, _F = 70;\n\n// Strip underscores only if present (avoid allocation for common case)\nconst strip = s => s.indexOf('_') < 0 ? s : s.replaceAll('_', '');\n\n// Decimal number - check for .. range operator (don't consume . if followed by .)\n// Supports numeric separators: 1_000_000 and BigInt suffix: 123n\nconst num = a => {\n let str = strip(next(c =>\n // . is decimal only if NOT followed by another . (range operator)\n (c === PERIOD && cur.charCodeAt(idx + 1) !== PERIOD) ||\n (c >= _0 && c <= _9) ||\n c === UNDERSCORE ||\n ((c === _E || c === _e) && ((c = cur.charCodeAt(idx + 1)) >= _0 && c <= _9 || c === PLUS || c === MINUS) ? 2 : 0)\n ));\n // BigInt suffix\n if (cur.charCodeAt(idx) === _n) { skip(); return [, BigInt(str)]; }\n return (a = +str) != a ? err() : [, a];\n};\n\n// Char test for prefix base (with underscore support)\nconst charTest = {\n 2: c => c === 48 || c === 49 || c === UNDERSCORE,\n 8: c => (c >= 48 && c <= 55) || c === UNDERSCORE,\n 16: c => (c >= _0 && c <= _9) || (c >= _a && c <= _f) || (c >= _A && c <= _F) || c === UNDERSCORE\n};\n\n// Default: no prefixes\nparse.number = null;\n\n// .1 (but not .. range)\nlookup[PERIOD] = a => !a && cur.charCodeAt(idx + 1) !== PERIOD && num();\n\n// 0-9: check parse.number for prefix config\nfor (let i = _0; i <= _9; i++) lookup[i] = a => a ? void 0 : num();\nlookup[_0] = a => {\n if (a) return;\n const cfg = parse.number;\n if (cfg) {\n for (const [pre, base] of Object.entries(cfg)) {\n if (pre[0] === '0' && cur[idx + 1]?.toLowerCase() === pre[1]) {\n skip(2);\n return [, parseInt(strip(next(charTest[base])), base)];\n }\n }\n }\n return num();\n};\n", "/**\n * Strings with escape sequences\n *\n * Configurable via parse.string: { '\"': true } or { '\"': true, \"'\": true }\n */\nimport { parse, lookup, next, err, skip, idx, cur } from '../parse.js';\n\nconst BSLASH = 92, DQUOTE = 34, SQUOTE = 39;\nconst esc = { n: '\\n', r: '\\r', t: '\\t', b: '\\b', f: '\\f', v: '\\v' };\n\n// Parse string with given quote char code\nconst parseString = q => (a, _, s = '') => {\n if (a || !parse.string?.[String.fromCharCode(q)]) return;\n skip();\n next(c => c - q && (c === BSLASH ? (s += esc[cur[idx + 1]] || cur[idx + 1], 2) : (s += cur[idx], 1)));\n cur[idx] === String.fromCharCode(q) ? skip() : err('Bad string');\n return [, s];\n};\n\n// Register both quote chars (enabled via parse.string config)\nlookup[DQUOTE] = parseString(DQUOTE);\nlookup[SQUOTE] = parseString(SQUOTE);\n\n// Default: double quotes only\nparse.string = { '\"': true };\n\nexport { esc };\n", "/**\n * Assignment operators (C-family)\n *\n * = += -= *= /= %= |= &= ^= >>= <<=\n * Note: **= is in pow.js, >>>= ||= &&= ??= are JS-specific (in assignment-js.js)\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst ASSIGN = 20;\n\n// Register all assignment operators\n'= += -= *= /= %= |= &= ^= >>= <<='.split(' ').map(op => binary(op, ASSIGN, true));\n\n// Simple assign helper for x, a.b, a[b], (x)\nconst assign = (a, fn, obj, key) =>\n typeof a === 'string' ? ctx => fn(ctx, a, ctx) :\n a[0] === '.' ? (obj = compile(a[1]), key = a[2], ctx => fn(obj(ctx), key, ctx)) :\n a[0] === '[]' && a.length === 3 ? (obj = compile(a[1]), key = compile(a[2]), ctx => fn(obj(ctx), key(ctx), ctx)) :\n a[0] === '()' && a.length === 2 ? assign(a[1], fn) :\n (() => { throw Error('Invalid assignment target') })();\n\n// Compile - use Function to generate operator implementations\nconst ops = { '=': (o,k,v)=>o[k]=v, '+=': (o,k,v)=>o[k]+=v, '-=': (o,k,v)=>o[k]-=v, '*=': (o,k,v)=>o[k]*=v,\n '/=': (o,k,v)=>o[k]/=v, '%=': (o,k,v)=>o[k]%=v, '|=': (o,k,v)=>o[k]|=v, '&=': (o,k,v)=>o[k]&=v,\n '^=': (o,k,v)=>o[k]^=v, '>>=': (o,k,v)=>o[k]>>=v, '<<=': (o,k,v)=>o[k]<<=v };\nfor (const op in ops) operator(op, (a, b) => (b = compile(b), assign(a, (o, k, ctx) => ops[op](o, k, b(ctx)))));\n", "/**\n * Logical operators (base)\n *\n * ! && ||\n * For ?? see nullish.js\n */\nimport { binary, unary, operator, compile } from '../../parse.js';\n\nconst LOR = 30, LAND = 40, PREFIX = 140;\n\n// ! must be registered before != and !==\nbinary('!', PREFIX);\nunary('!', PREFIX);\n\nbinary('||', LOR);\nbinary('&&', LAND);\n\n// Compile\noperator('!', a => (a = compile(a), ctx => !a(ctx)));\noperator('||', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) || b(ctx)));\noperator('&&', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) && b(ctx)));\n", "/**\n * Bitwise operators (C-family)\n *\n * | & ^ ~ >> <<\n * Note: >>> is JS-specific (in bitwise-js.js)\n */\nimport { binary, unary, operator, compile } from '../../parse.js';\n\nconst OR = 50, XOR = 60, AND = 70, SHIFT = 100, PREFIX = 140;\n\n// Base operators first (tried last in chain)\nbinary('|', OR);\nbinary('&', AND);\nbinary('^', XOR);\n\n// Shifts (after < >)\nbinary('>>', SHIFT);\nbinary('<<', SHIFT);\n\n// Unary\nunary('~', PREFIX);\n\n// Compile\noperator('~', a => (a = compile(a), ctx => ~a(ctx)));\noperator('|', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) | b(ctx)));\noperator('&', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) & b(ctx)));\noperator('^', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) ^ b(ctx)));\noperator('>>', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) >> b(ctx)));\noperator('<<', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) << b(ctx)));\n", "/**\n * Comparison operators\n *\n * < > <= >=\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst COMP = 90;\n\nbinary('<', COMP);\nbinary('>', COMP);\nbinary('<=', COMP);\nbinary('>=', COMP);\n\n// Compile\noperator('>', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) > b(ctx)));\noperator('<', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) < b(ctx)));\noperator('>=', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) >= b(ctx)));\noperator('<=', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) <= b(ctx)));\n", "/**\n * Equality operators (base)\n *\n * == !=\n * For === !== see equality-strict.js\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst EQ = 80;\n\nbinary('==', EQ);\nbinary('!=', EQ);\n\n// Compile\noperator('==', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) == b(ctx)));\noperator('!=', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) != b(ctx)));\n", "/**\n * Arithmetic operators\n *\n * + - * / %\n * Unary: + -\n */\nimport { binary, unary, operator, compile } from '../../parse.js';\n\nconst ADD = 110, MULT = 120, PREFIX = 140;\n\nbinary('+', ADD);\nbinary('-', ADD);\nbinary('*', MULT);\nbinary('/', MULT);\nbinary('%', MULT);\n\nunary('+', PREFIX);\nunary('-', PREFIX);\n\n// Compile\noperator('+', (a, b) => b !== undefined ?\n (a = compile(a), b = compile(b), ctx => a(ctx) + b(ctx)) :\n (a = compile(a), ctx => +a(ctx)));\noperator('-', (a, b) => b !== undefined ?\n (a = compile(a), b = compile(b), ctx => a(ctx) - b(ctx)) :\n (a = compile(a), ctx => -a(ctx)));\noperator('*', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) * b(ctx)));\noperator('/', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) / b(ctx)));\noperator('%', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) % b(ctx)));\n", "/**\n * Increment/decrement operators\n *\n * ++ -- (prefix and postfix)\n */\nimport { token, expr, operator, compile } from '../../parse.js';\n\nconst POSTFIX = 150;\n\ntoken('++', POSTFIX, a => a ? ['++', a, null] : ['++', expr(POSTFIX - 1)]);\ntoken('--', POSTFIX, a => a ? ['--', a, null] : ['--', expr(POSTFIX - 1)]);\n\n// Compile (b=null means postfix, b=undefined means prefix)\n// Simple prop helper for increment - handles x, a.b, a[b], (x)\nconst inc = (a, fn, obj, key) =>\n typeof a === 'string' ? ctx => fn(ctx, a) :\n a[0] === '.' ? (obj = compile(a[1]), key = a[2], ctx => fn(obj(ctx), key)) :\n a[0] === '[]' && a.length === 3 ? (obj = compile(a[1]), key = compile(a[2]), ctx => fn(obj(ctx), key(ctx))) :\n a[0] === '()' && a.length === 2 ? inc(a[1], fn) : // unwrap parens: (x)++\n (() => { throw Error('Invalid increment target') })();\n\noperator('++', (a, b) => inc(a, b === null ? (o, k) => o[k]++ : (o, k) => ++o[k]));\noperator('--', (a, b) => inc(a, b === null ? (o, k) => o[k]-- : (o, k) => --o[k]));\n", "import { nary, group, operator, compile } from '../parse.js';\n\nconst STATEMENT = 5, SEQ = 10, ACCESS = 170;\n\n// (a,b,c), (a) \u2014 uses ACCESS to avoid conflict with ?.\ngroup('()', ACCESS);\n\n// Sequences\nnary(',', SEQ);\nnary(';', STATEMENT, true); // right-assoc to allow same-prec statements\n\n// Compile sequences - returns last evaluated value\nconst seq = (...args) => (args = args.map(compile), ctx => { let r; for (const a of args) r = a(ctx); return r; });\noperator(',', seq);\noperator(';', seq);\n", "/**\n * Property access: a.b, a[b], a(b), [1,2,3]\n * For private fields (#x), see class.js\n */\nimport { access, binary, operator, compile } from '../parse.js';\n\n// Block prototype chain attacks\nexport const unsafe = k => k?.[0] === '_' && k[1] === '_' || k === 'constructor' || k === 'prototype';\n\nconst ACCESS = 170;\n\n// a[b]\naccess('[]', ACCESS);\n\n// a.b\nbinary('.', ACCESS);\n\n// a(b,c,d), a()\naccess('()', ACCESS);\n\n// Compile\nconst err = msg => { throw Error(msg) };\noperator('[]', (a, b) => {\n // Array literal: [1,2,3] - b is strictly undefined (AST length 2)\n if (b === undefined) {\n a = !a ? [] : a[0] === ',' ? a.slice(1) : [a];\n a = a.map(a => a == null ? (() => undefined) : a[0] === '...' ? (a = compile(a[1]), ctx => a(ctx)) : (a = compile(a), ctx => [a(ctx)]));\n return ctx => a.flatMap(a => a(ctx));\n }\n // Member access: a[b]\n if (b == null) err('Missing index');\n a = compile(a); b = compile(b);\n return ctx => { const k = b(ctx); return unsafe(k) ? undefined : a(ctx)[k]; };\n});\noperator('.', (a, b) => (a = compile(a), b = !b[0] ? b[1] : b, unsafe(b) ? () => undefined : ctx => a(ctx)[b]));\noperator('()', (a, b) => {\n // Group: (expr) - no second argument means grouping, not call\n if (b === undefined) return a == null ? err('Empty ()') : compile(a);\n // Validate: no sparse arguments in calls\n const hasSparse = n => n?.[0] === ',' && n.slice(1).some(a => a == null || hasSparse(a));\n if (hasSparse(b)) err('Empty argument');\n const args = !b ? () => [] :\n b[0] === ',' ? (b = b.slice(1).map(compile), ctx => b.map(arg => arg(ctx))) :\n (b = compile(b), ctx => [b(ctx)]);\n // Inline call handling for x(), a.b(), a[b](), (x)()\n return call(a, (obj, path, ctx) => obj[path](...args(ctx)));\n});\n\n// Left-value check (valid assignment target)\nexport const isLval = n =>\n typeof n === 'string' ||\n (Array.isArray(n) && (\n n[0] === '.' || n[0] === '?.' ||\n (n[0] === '[]' && n.length === 3) || n[0] === '?.[]' ||\n (n[0] === '()' && n.length === 2 && isLval(n[1])) ||\n n[0] === '{}'\n ));\n\n// Simple call helper (no optional chaining) - handles x(), a.b(), a[b](), (x)()\nconst call = (a, fn, obj, path) => (\n a == null ? err('Empty ()') :\n a[0] === '()' && a.length == 2 ? call(a[1], fn) :\n typeof a === 'string' ? ctx => fn(ctx, a, ctx) :\n a[0] === '.' ? (obj = compile(a[1]), path = a[2], ctx => fn(obj(ctx), path, ctx)) :\n a[0] === '?.' ? (obj = compile(a[1]), path = a[2], ctx => { const o = obj(ctx); return o == null ? undefined : fn(o, path, ctx); }) :\n a[0] === '[]' && a.length === 3 ? (obj = compile(a[1]), path = compile(a[2]), ctx => fn(obj(ctx), path(ctx), ctx)) :\n a[0] === '?.[]' ? (obj = compile(a[1]), path = compile(a[2]), ctx => { const o = obj(ctx); return o == null ? undefined : fn(o, path(ctx), ctx); }) :\n (a = compile(a), ctx => fn([a(ctx)], 0, ctx))\n);\n\n// Export as prop for backward compatibility with other features\nexport const prop = call;\n", "/**\n * subscript: Minimal expression parser + compiler\n *\n * Usage:\n * subscript`a + b`(ctx) - template tag, returns compiled evaluator\n * subscript`a + ${x}`(ctx) - interpolations: primitives, objects, AST nodes\n * subscript('a + b')(ctx) - direct call (no caching)\n *\n * For more features:\n * import { parse, compile } from 'subscript/justin.js' // + JSON, arrows, templates\n * import { parse, compile } from 'subscript/jessie.js' // + statements, functions\n */\n\n// Expression features\nimport './feature/number.js'; // Decimal numbers: 123, 1.5, 1e3\nimport './feature/string.js'; // Double-quoted strings with escapes\n\n// Operators (C-family common set) - order matters for token chain performance\nimport './feature/op/assignment.js'; // = += -= *= /= %= |= &= ^= >>= <<=\nimport './feature/op/logical.js'; // ! && ||\nimport './feature/op/bitwise.js'; // ~ | & ^ >> <<\nimport './feature/op/comparison.js'; // < > <= >=\nimport './feature/op/equality.js'; // == !=\nimport './feature/op/arithmetic.js'; // + - * / %\nimport './feature/op/increment.js'; // ++ --\n\nimport './feature/group.js'; // Grouping: (a), sequences: a, b; a; b\nimport './feature/access.js'; // Property access: a.b, a[b], f(), [a,b]\n\nimport { parse, compile } from './parse.js';\nexport * from './parse.js';\n\n// Cache for compiled templates (keyed by template strings array reference)\nconst cache = new WeakMap();\n\n// Template tag: subscript`a + b` or subscript`a + ${x}`\nconst subscript = (strings, ...values) =>\n // Direct call subscript('code') - strings is just a string\n typeof strings === 'string' ? compile(parse(strings)) :\n // Template literal - use cache\n cache.get(strings) || cache.set(strings, compileTemplate(strings, values)).get(strings);\n\n// Compile template with placeholders (using Private Use Area chars)\nconst PUA = 0xE000;\nconst compileTemplate = (strings, values) => {\n const code = strings.reduce((acc, s, i) => acc + (i ? String.fromCharCode(PUA + i - 1) : '') + s, '');\n const ast = parse(code);\n const inject = node => {\n if (typeof node === 'string' && node.length === 1) {\n let i = node.charCodeAt(0) - PUA, v;\n if (i >= 0 && i < values.length) return v = values[i], isAST(v) ? v : [, v];\n }\n return Array.isArray(node) ? node.map(inject) : node;\n };\n return compile(inject(ast));\n};\n\n// Detect AST node vs regular value\n// AST: string (identifier), or array with string/undefined first element\nconst isAST = v =>\n typeof v === 'string' ||\n (Array.isArray(v) && (typeof v[0] === 'string' || v[0] === undefined));\n\nexport default subscript;\n", "/** Configurable comments via parse.comment = { start: end } */\nimport { parse, cur, idx, seek } from '../parse.js';\n\nconst SPACE = 32, space = parse.space;\n\n// Default C-style comments\nparse.comment ??= { '//': '\\n', '/*': '*/' };\n\n// Cached array: [[start, end, firstCharCode], ...]\nlet comments;\n\nparse.space = () => {\n if (!comments) comments = Object.entries(parse.comment).map(([s, e]) => [s, e, s.charCodeAt(0)]);\n for (var cc; (cc = space()); ) {\n for (var j = 0, c; c = comments[j++]; ) {\n if (cc === c[2] && cur.substr(idx, c[0].length) === c[0]) {\n var i = idx + c[0].length;\n if (c[1] === '\\n') while (cur.charCodeAt(i) >= SPACE) i++;\n else { while (cur[i] && cur.substr(i, c[1].length) !== c[1]) i++; if (cur[i]) i += c[1].length; }\n seek(i); cc = 0; break;\n }\n }\n if (cc) return cc;\n }\n return cc;\n};\n", "/**\n * Identity operators\n *\n * === !==\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst EQ = 80;\n\nbinary('===', EQ);\nbinary('!==', EQ);\n\n// Compile\noperator('===', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) === b(ctx)));\noperator('!==', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) !== b(ctx)));\n", "/**\n * Nullish coalescing operator (JS-specific)\n *\n * ??\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst LOR = 30;\n\nbinary('??', LOR);\n\n// Compile\noperator('??', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) ?? b(ctx)));\n", "/**\n * Exponentiation operator\n *\n * ** **=\n *\n * ES2016+, not in classic JS/C\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { isLval, prop } from '../access.js';\n\nconst EXP = 130, ASSIGN = 20;\n\nbinary('**', EXP, true);\nbinary('**=', ASSIGN, true);\n\n// Compile\noperator('**', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) ** b(ctx)));\nconst err = msg => { throw Error(msg) };\noperator('**=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (obj, path, ctx) => obj[path] **= b(ctx))));\n", "/**\n * Membership operator\n *\n * in: key in object\n * of: for-of iteration (parsed as binary in for head)\n *\n * Note: instanceof is in class.js (jessie feature)\n */\nimport { binary, operator, compile } from '../../parse.js';\n\nconst COMP = 90;\n\nbinary('in', COMP);\nbinary('of', COMP);\n\n// Compile\noperator('in', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) in b(ctx)));\n", "/**\n * Unsigned right shift operators\n *\n * >>> >>>=\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { isLval, prop } from '../access.js';\n\nconst ASSIGN = 20, SHIFT = 100;\nconst err = msg => { throw Error(msg) };\n\nbinary('>>>', SHIFT);\nbinary('>>>=', ASSIGN, true);\n\n// Compile\noperator('>>>', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) >>> b(ctx)));\noperator('>>>=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] >>>= b(ctx))));\n", "/**\n * Destructuring patterns and binding\n *\n * Handles: [a, b] = arr, {x, y} = obj, [a, ...rest] = arr, {x = default} = obj\n */\nimport { compile } from '../parse.js';\n\n// Flatten comma into array: [',', a, b, c] \u2192 [a, b, c]\nconst flatten = items => items[0]?.[0] === ',' ? items[0].slice(1) : items;\n\n// Destructure value into context\nexport const destructure = (pattern, value, ctx) => {\n if (typeof pattern === 'string') { ctx[pattern] = value; return; }\n const [op, ...raw] = pattern;\n const items = flatten(raw);\n if (op === '{}') {\n const used = [];\n for (const item of items) {\n // Rest: {...rest}\n if (Array.isArray(item) && item[0] === '...') {\n const rest = {};\n for (const k in value) if (!used.includes(k)) rest[k] = value[k];\n ctx[item[1]] = rest;\n break;\n }\n let key, binding, def;\n // Shorthand: {x} \u2192 item is 'x'\n // With default: {x = 1} \u2192 ['=', 'x', default]\n // Rename: {x: y} \u2192 [':', 'x', 'y']\n if (typeof item === 'string') { key = binding = item }\n else if (item[0] === '=') { typeof item[1] === 'string' ? (key = binding = item[1]) : ([, key, binding] = item[1]); def = item[2] }\n else { [, key, binding] = item }\n used.push(key);\n let val = value[key];\n if (val === undefined && def) val = compile(def)(ctx);\n destructure(binding, val, ctx);\n }\n }\n else if (op === '[]') {\n let i = 0;\n for (const item of items) {\n if (item === null) { i++; continue; }\n if (Array.isArray(item) && item[0] === '...') { ctx[item[1]] = value.slice(i); break; }\n let binding = item, def;\n if (Array.isArray(item) && item[0] === '=') [, binding, def] = item;\n let val = value[i++];\n if (val === undefined && def) val = compile(def)(ctx);\n destructure(binding, val, ctx);\n }\n }\n};\n", "/**\n * Logical/nullish assignment operators + destructuring\n *\n * ||= &&= ??= + destructuring support for let/const/var\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { destructure } from '../destruct.js';\nimport { isLval, prop } from '../access.js';\n\nconst ASSIGN = 20;\nconst err = msg => { throw Error(msg) };\n\nbinary('||=', ASSIGN, true);\nbinary('&&=', ASSIGN, true);\nbinary('??=', ASSIGN, true);\n\n// Override = to support destructuring\noperator('=', (a, b) => {\n // Handle let/const/var declarations: ['=', ['let', pattern], value]\n if (Array.isArray(a) && (a[0] === 'let' || a[0] === 'const' || a[0] === 'var')) {\n const pattern = a[1];\n b = compile(b);\n if (typeof pattern === 'string') return ctx => { ctx[pattern] = b(ctx); };\n return ctx => destructure(pattern, b(ctx), ctx);\n }\n isLval(a) || err('Invalid assignment target');\n return (b = compile(b), prop(a, (obj, path, ctx) => obj[path] = b(ctx)));\n});\n\n// Compile\noperator('||=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] ||= b(ctx))));\noperator('&&=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] &&= b(ctx))));\noperator('??=', (a, b) => (isLval(a) || err('Invalid assignment target'), b = compile(b), prop(a, (o, k, ctx) => o[k] ??= b(ctx))));\n", "// Block parsing helpers\nimport { expr, skip, space, lookup, err, parse, seek, cur, idx, parens, loc, operator, compile, peek } from '../parse.js';\n\nconst STATEMENT = 5, OBRACE = 123, CBRACE = 125;\n\n// keyword(op, prec, fn) - prefix-only word token with object property support\n// keyword('while', 6, () => ['while', parens(), body()])\n// keyword('break', 6, () => ['break'])\n// Allows property names: {while:1} won't match keyword, falls back to identifier\nexport const keyword = (op, prec, map, c = op.charCodeAt(0), l = op.length, prev = lookup[c], r) =>\n lookup[c] = (a, curPrec, curOp, from = idx) =>\n !a &&\n (curOp ? op == curOp : (l < 2 || cur.substr(idx, l) == op) && (curOp = op)) &&\n curPrec < prec &&\n !parse.id(cur.charCodeAt(idx + l)) &&\n peek(idx + l) !== 58 && // allow {keyword:value}\n (seek(idx + l), (r = map()) ? loc(r, from) : seek(from), r) ||\n prev?.(a, curPrec, curOp);\n\n// infix(op, prec, fn) - infix word token (requires left operand)\n// infix('catch', 6, a => ['catch', a, parens(), block()])\n// infix('finally', 6, a => ['finally', a, block()])\n// attaches .loc to array results for source mapping\nexport const infix = (op, prec, map, c = op.charCodeAt(0), l = op.length, prev = lookup[c], r) =>\n lookup[c] = (a, curPrec, curOp, from = idx) =>\n a &&\n (curOp ? op == curOp : (l < 2 || cur.substr(idx, l) == op) && (curOp = op)) &&\n curPrec < prec &&\n !parse.id(cur.charCodeAt(idx + l)) &&\n (seek(idx + l), loc(r = map(a), from), r) ||\n prev?.(a, curPrec, curOp);\n\n// block() - parse required { body }\nexport const block = () =>\n (space() === OBRACE || err('Expected {'), skip(), expr(STATEMENT - .5, CBRACE) || null);\n\n// body() - parse { body } or single statement\nexport const body = () =>\n space() !== OBRACE ? expr(STATEMENT + .5) : (skip(), expr(STATEMENT - .5, CBRACE) || null);\n", "/**\n * Literal values\n *\n * true, false, null, undefined, NaN, Infinity\n *\n * Note: undefined uses [] (empty array) for JSON round-trip compatibility.\n * [, undefined] serializes to [null, null] which would compile to null.\n * [] serializes to [] and compiles back to undefined.\n */\nimport { literal } from '../parse.js';\nimport { keyword } from './block.js';\n\nliteral('true', true);\nliteral('false', false);\nliteral('null', null);\nkeyword('undefined', 200, () => []); // [] for JSON compatibility\nliteral('NaN', NaN);\nliteral('Infinity', Infinity);\n", "/**\n * Ternary conditional operator\n *\n * a ? b : c \u2192 conditional expression\n *\n * Common in: C, JS, Java, PHP, etc.\n */\nimport { token, expr, next, operator, compile } from '../../parse.js';\n\nconst ASSIGN = 20;\n\ntoken('?', ASSIGN, (a, b, c) => a && (b = expr(ASSIGN - 1)) && next(c => c === 58) && (c = expr(ASSIGN - 1), ['?', a, b, c]));\n\n// Compile\noperator('?', (a, b, c) => (a = compile(a), b = compile(b), c = compile(c), ctx => a(ctx) ? b(ctx) : c(ctx)));\n", "// Control flow symbols (shared by loop, group, switch, try, function)\n// RETURN is array to hold value - reused, no allocation per throw\nexport const BREAK = Symbol('break'), CONTINUE = Symbol('continue'), RETURN = [];\n", "/**\n * Arrow function operator\n *\n * (a, b) => expr \u2192 arrow function\n *\n * Common in: JS, TS, Java, C#, Kotlin, Scala\n */\nimport { binary, operator, compile } from '../../parse.js';\nimport { RETURN } from '../control.js';\n\nconst ASSIGN = 20;\n\nbinary('=>', ASSIGN, true);\n\n// Compile\noperator('=>', (a, b) => {\n // Normalize params: () \u2192 [], x \u2192 [x], (a, b) \u2192 [a, b]\n a = a?.[0] === '()' ? a[1] : a;\n const ps = !a ? [] : a[0] === ',' ? a.slice(1) : [a];\n // Check for rest param\n let restIdx = -1, restName = null;\n const last = ps[ps.length - 1];\n if (Array.isArray(last) && last[0] === '...') {\n restIdx = ps.length - 1;\n restName = last[1];\n ps.length--;\n }\n // Arrow body: {} is always block (need parens for object: ({...}))\n // Block body returns undefined unless explicit return\n const isBlock = b?.[0] === '{}';\n b = compile(isBlock ? ['{', b[1]] : b);\n return ctx => (...args) => {\n const l = {};\n ps.forEach((p, i) => l[p] = args[i]);\n if (restName) l[restName] = args.slice(restIdx);\n const fnCtx = new Proxy(l, {\n get: (l, k) => k in l ? l[k] : ctx?.[k],\n set: (l, k, v) => ((k in l ? l : ctx)[k] = v, true),\n has: (l, k) => k in l || (ctx ? k in ctx : false)\n });\n try { const r = b(fnCtx); return isBlock ? undefined : r; }\n catch (e) { if (e === RETURN) return e[0]; throw e; }\n };\n});\n", "/**\n * Spread/rest operator\n *\n * ...x \u2192 spread in arrays/calls, rest in params\n *\n * Common in: JS, TS, Python (*args), Ruby (*splat)\n */\nimport { unary, operator, compile } from '../../parse.js';\n\nconst PREFIX = 140;\n\nunary('...', PREFIX);\n\n// Compile (for arrays/objects spread)\noperator('...', a => (a = compile(a), ctx => Object.entries(a(ctx))));\n", "/**\n * Optional chaining operators\n *\n * a?.b \u2192 optional member access\n * a?.[x] \u2192 optional computed access\n * a?.() \u2192 optional call\n *\n * Common in: JS, TS, Swift, Kotlin, C#\n */\nimport { token, expr, skip, space, operator, compile } from '../../parse.js';\nimport { unsafe } from '../access.js';\n\nconst ACCESS = 170;\n\ntoken('?.', ACCESS, (a, b) => {\n if (!a) return;\n const cc = space();\n // Optional call: a?.()\n if (cc === 40) { skip(); return ['?.()', a, expr(0, 41) || null]; }\n // Optional computed: a?.[x]\n if (cc === 91) { skip(); return ['?.[]', a, expr(0, 93)]; }\n // Optional member: a?.b\n b = expr(ACCESS);\n return b ? ['?.', a, b] : void 0;\n});\n\n// Compile\noperator('?.', (a, b) => (a = compile(a), unsafe(b) ? () => undefined : ctx => a(ctx)?.[b]));\noperator('?.[]', (a, b) => (a = compile(a), b = compile(b), ctx => { const k = b(ctx); return unsafe(k) ? undefined : a(ctx)?.[k]; }));\noperator('?.()', (a, b) => {\n const args = !b ? () => [] :\n b[0] === ',' ? (b = b.slice(1).map(compile), ctx => b.map(arg => arg(ctx))) :\n (b = compile(b), ctx => [b(ctx)]);\n\n // Handle nested optional chain: a?.method?.() or a?.[\"method\"]?.()\n if (a[0] === '?.') {\n const container = compile(a[1]);\n const prop = a[2];\n return unsafe(prop) ? () => undefined :\n ctx => { const c = container(ctx); return c?.[prop]?.(...args(ctx)); };\n }\n if (a[0] === '?.[]') {\n const container = compile(a[1]);\n const prop = compile(a[2]);\n return ctx => { const c = container(ctx); const p = prop(ctx); return unsafe(p) ? undefined : c?.[p]?.(...args(ctx)); };\n }\n // Handle a?.() where a is a.method or a[method] - need to bind this\n if (a[0] === '.') {\n const obj = compile(a[1]);\n const prop = a[2];\n return unsafe(prop) ? () => undefined :\n ctx => { const o = obj(ctx); return o?.[prop]?.(...args(ctx)); };\n }\n if (a[0] === '[]' && a.length === 3) {\n const obj = compile(a[1]);\n const prop = compile(a[2]);\n return ctx => { const o = obj(ctx); const p = prop(ctx); return unsafe(p) ? undefined : o?.[p]?.(...args(ctx)); };\n }\n const fn = compile(a);\n return ctx => fn(ctx)?.(...args(ctx));\n});\n", "/**\n * Unary keyword operators\n *\n * typeof x \u2192 type string\n * void x \u2192 undefined\n * delete x \u2192 remove property\n * new X() \u2192 construct instance\n *\n * JS-specific keywords\n */\nimport { unary, operator, compile, skip, expr, word } from '../../parse.js';\nimport { keyword } from '../block.js';\n\nconst PREFIX = 140;\n\nunary('typeof', PREFIX);\nunary('void', PREFIX);\nunary('delete', PREFIX);\n// new X() or new.target\nkeyword('new', PREFIX, () =>\n word('.target') ? (skip(7), ['new.target']) : ['new', expr(PREFIX)]\n);\n\n// Compile\noperator('typeof', a => (a = compile(a), ctx => typeof a(ctx)));\noperator('void', a => (a = compile(a), ctx => (a(ctx), undefined)));\noperator('delete', a => {\n if (a[0] === '.') {\n const obj = compile(a[1]), key = a[2];\n return ctx => delete obj(ctx)[key];\n }\n if (a[0] === '[]') {\n const obj = compile(a[1]), key = compile(a[2]);\n return ctx => delete obj(ctx)[key(ctx)];\n }\n return () => true;\n});\noperator('new', (call) => {\n const target = compile(call?.[0] === '()' ? call[1] : call);\n const args = call?.[0] === '()' ? call[2] : null;\n const argList = !args ? () => [] :\n args[0] === ',' ? (a => ctx => a.map(f => f(ctx)))(args.slice(1).map(compile)) :\n (a => ctx => [a(ctx)])(compile(args));\n return ctx => new (target(ctx))(...argList(ctx));\n});\n", "/**\n * Object accessor properties (getters/setters)\n *\n * AST:\n * { get x() { body } } \u2192 ['{}', ['get', 'x', body]]\n * { set x(v) { body } } \u2192 ['{}', ['set', 'x', 'v', body]]\n */\nimport { token, expr, skip, space, next, parse, cur, idx, operator, compile } from '../parse.js';\n\n// Accessor marker for object property definitions\nexport const ACC = Symbol('accessor');\n\nconst ASSIGN = 20;\nconst OPAREN = 40, CPAREN = 41, OBRACE = 123, CBRACE = 125;\n\n// Shared parser for get/set \u2014 returns false if not valid accessor pattern (falls through to identifier)\n// Returns false (not undefined) to signal \"fall through without setting reserved\"\nconst accessor = (kind) => a => {\n if (a) return; // not prefix\n space();\n const name = next(parse.id);\n if (!name) return false; // no property name = not accessor (e.g. `{ get: 1 }`)\n space();\n if (cur.charCodeAt(idx) !== OPAREN) return false; // not followed by ( = not accessor\n skip();\n const params = expr(0, CPAREN);\n space();\n if (cur.charCodeAt(idx) !== OBRACE) return false;\n skip();\n return [kind, name, params, expr(0, CBRACE)];\n};\n\ntoken('get', ASSIGN - 1, accessor('get'));\ntoken('set', ASSIGN - 1, accessor('set'));\n\n// Method shorthand: { foo() {} } \u2192 [':', 'foo', ['=>', ['()', params], body]]\n// Uses token() infix handler - returns undefined to fall through to function call\ntoken('(', ASSIGN - 1, a => {\n // Only handle infix position with plain identifier in low-precedence context (object literal)\n if (!a || typeof a !== 'string') return;\n const params = expr(0, CPAREN) || null;\n space();\n // Not followed by { - not method shorthand, fall through\n if (cur.charCodeAt(idx) !== OBRACE) return;\n skip();\n return [':', a, ['=>', ['()', params], expr(0, CBRACE) || null]];\n});\n\n// Compile\noperator('get', (name, body) => {\n body = body ? compile(body) : () => {};\n return ctx => [[ACC, name, {\n get: function() { const s = Object.create(ctx || {}); s.this = this; return body(s); }\n }]];\n});\n\noperator('set', (name, param, body) => {\n body = body ? compile(body) : () => {};\n return ctx => [[ACC, name, {\n set: function(v) { const s = Object.create(ctx || {}); s.this = this; s[param] = v; body(s); }\n }]];\n});\n", "/**\n * Collection literals: arrays and objects (Justin feature)\n *\n * [a, b, c]\n * {a: 1, b: 2}\n * {a, b} (shorthand)\n *\n * Block vs object detection (jessie):\n * ['{}', [';', ...]] \u2192 ['{', body] block with statements\n * ['{}', ['let', ...]] \u2192 ['{', body] block with declaration\n * ['{}', null] \u2192 ['{}', null] empty object {}\n * ['{}', 'a'] \u2192 ['{}', 'a'] object shorthand {a}\n * ['{}', [':', k, v]] \u2192 ['{}', ...] object literal\n */\nimport { group, binary, operator, compile } from '../parse.js';\nimport { ACC } from './accessor.js';\n\nconst ASSIGN = 20, TOKEN = 200;\n\n// Object inner: null, string, or array starting with : , ... get set\nconst isObject = a => a == null || typeof a === 'string' || [':', ',', '...', 'get', 'set'].includes(a[0]);\n\n// [a,b,c]\ngroup('[]', TOKEN);\n\n// {a:1, b:2, c:3}\ngroup('{}', TOKEN);\n\n// a: b (colon operator for object properties)\nbinary(':', ASSIGN - 1, true);\n\n// Compile - detect block vs object\noperator('{}', (a, b) => {\n if (b !== undefined) return;\n // Block: not an object pattern\n if (!isObject(a)) return compile(['{', a]);\n // Object literal\n a = !a ? [] : a[0] !== ',' ? [a] : a.slice(1);\n const props = a.map(p => compile(typeof p === 'string' ? [':', p, p] : p));\n return ctx => {\n const obj = {}, acc = {};\n for (const e of props.flatMap(f => f(ctx))) {\n if (e[0] === ACC) {\n const [, n, desc] = e;\n acc[n] = { ...acc[n], ...desc, configurable: true, enumerable: true };\n } else obj[e[0]] = e[1];\n }\n for (const n in acc) Object.defineProperty(obj, n, acc[n]);\n return obj;\n };\n});\n\n// Block statement - creates scope\noperator('{', body => {\n body = body ? compile(body) : () => undefined;\n return ctx => body(Object.create(ctx));\n});\n\noperator(':', (a, b) => (b = compile(b), Array.isArray(a) ?\n (a = compile(a), ctx => [[a(ctx), b(ctx)]]) : ctx => [[a, b(ctx)]]));\n", "/**\n * Template literals: `a ${x} b` \u2192 ['`', [,'a '], 'x', [,' b']]\n * Tagged templates: tag`...` \u2192 ['``', 'tag', ...]\n */\nimport { parse, skip, err, expr, lookup, cur, idx, operator, compile } from '../parse.js';\n\nconst ACCESS = 170, BACKTICK = 96, DOLLAR = 36, OBRACE = 123, BSLASH = 92;\nconst esc = { n: '\\n', r: '\\r', t: '\\t', b: '\\b', f: '\\f', v: '\\v' };\n\n// Parse template body after opening `\nconst parseBody = () => {\n const parts = [];\n for (let s = '', c; (c = cur.charCodeAt(idx)) !== BACKTICK; )\n !c ? err('Unterminated template') :\n c === BSLASH ? (skip(), s += esc[cur[idx]] || cur[idx], skip()) :\n c === DOLLAR && cur.charCodeAt(idx + 1) === OBRACE ? (s && parts.push([, s]), s = '', skip(2), parts.push(expr(0, 125))) :\n (s += cur[idx], skip(), c = cur.charCodeAt(idx), c === BACKTICK && s && parts.push([, s]));\n return skip(), parts;\n};\n\nconst prev = lookup[BACKTICK];\n// Tagged templates: decline when ASI with newline (return undefined to let ASI handle)\nlookup[BACKTICK] = (a, prec) =>\n a && prec < ACCESS ? (parse.asi && parse.newline ? void 0 : (skip(), ['``', a, ...parseBody()])) : // tagged\n !a ? (skip(), (p => p.length < 2 && p[0]?.[0] === undefined ? p[0] || [,''] : ['`', ...p])(parseBody())) : // plain\n prev?.(a, prec);\n\n// Compile\noperator('`', (...parts) => (parts = parts.map(compile), ctx => parts.map(p => p(ctx)).join('')));\noperator('``', (tag, ...parts) => {\n tag = compile(tag);\n const strings = [], exprs = [];\n for (const p of parts) {\n if (Array.isArray(p) && p[0] === undefined) strings.push(p[1]);\n else exprs.push(compile(p));\n }\n const strs = Object.assign([...strings], { raw: strings });\n return ctx => tag(ctx)(strs, ...exprs.map(e => e(ctx)));\n});\n", "/**\n * justin: JSON superset expression language\n *\n * Builds on subscript with JS-specific features:\n * optional chaining, arrow functions, spread, templates.\n */\nimport './subscript.js';\nimport { parse } from './parse.js';\n\n// Add single quotes\nparse.string[\"'\"] = true;\n\n// Add hex, binary, octal prefixes\nparse.number = { '0x': 16, '0b': 2, '0o': 8 };\n\nimport './feature/comment.js';\n\n// Extended operators\n// Note: assignment (=) is in subscript, must come BEFORE identity (===)\nimport './feature/op/identity.js'; // === !==\nimport './feature/op/nullish.js'; // ??\nimport './feature/op/pow.js'; // ** **=\nimport './feature/op/membership.js'; // in (instanceof is in jessie/class.js)\nimport './feature/op/bitwise-unsigned.js'; // >>> >>>=\nimport './feature/op/assign-logical.js'; // ||= &&= ??= + destructuring\n\n// JS-specific operators (ternary, arrow, spread, optional chaining, typeof/void/delete/new)\nimport './feature/literal.js';\nimport './feature/op/ternary.js';\nimport './feature/op/arrow.js';\nimport './feature/op/spread.js';\nimport './feature/op/optional.js';\nimport './feature/op/unary.js';\n\nimport './feature/collection.js';\nimport './feature/template.js';\n\nexport * from './parse.js';\nexport { default } from './subscript.js';\n", "/**\n * Variable declarations: let, const, var\n *\n * AST:\n * let x = 1 \u2192 ['let', ['=', 'x', 1]]\n * let x = 1, y = 2 \u2192 ['let', ['=', 'x', 1], ['=', 'y', 2]]\n * const {a} = x \u2192 ['const', ['=', ['{}', 'a'], 'x']]\n * for (let x in o) \u2192 ['for', ['in', ['let', 'x'], 'o'], body]\n * var x \u2192 ['var', 'x'] (acts as assignment target)\n */\nimport { expr, space, operator, compile } from '../parse.js';\nimport { keyword } from './block.js';\nimport { destructure } from './destruct.js';\n\nconst STATEMENT = 5, SEQ = 10, ASSIGN = 20;\n\n// let/const: expr(SEQ-1) consumes assignment, stops before comma\n// For for-in/of, return ['in/of', ['let', x], iterable] not ['let', ['in', x, it]]\n// For comma, return ['let', decl1, decl2, ...] not ['let', [',', ...]]\nconst decl = keyword => {\n let node = expr(SEQ - 1);\n // for (let x in obj) - restructure so for-loop sees in/of at top\n if (node?.[0] === 'in' || node?.[0] === 'of')\n return [node[0], [keyword, node[1]], node[2]];\n // let x = 1, y = 2 - flatten comma into nary let\n if (node?.[0] === ',')\n return [keyword, ...node.slice(1)];\n return [keyword, node];\n};\n\nkeyword('let', STATEMENT + 1, () => decl('let'));\nkeyword('const', STATEMENT + 1, () => decl('const'));\n\n// var: just declares identifier, assignment happens separately\n// var x = 5 \u2192 ['=', ['var', 'x'], 5]\nkeyword('var', STATEMENT, () => (space(), ['var', expr(ASSIGN)]));\n\n// Compile\nconst varOp = (...decls) => {\n decls = decls.map(d => {\n // Just identifier: let x\n if (typeof d === 'string') return ctx => { ctx[d] = undefined; };\n // Assignment: let x = 1\n if (d[0] === '=') {\n const [, pattern, val] = d;\n const v = compile(val);\n if (typeof pattern === 'string') return ctx => { ctx[pattern] = v(ctx); };\n return ctx => destructure(pattern, v(ctx), ctx);\n }\n return compile(d);\n });\n return ctx => { for (const d of decls) d(ctx); };\n};\noperator('let', varOp);\noperator('const', varOp);\n// var just declares the variable (assignment handled by = operator)\noperator('var', name => (typeof name === 'string'\n ? ctx => { ctx[name] = undefined; }\n : () => {}));\n", "// Function declarations and expressions\nimport { space, next, parse, parens, expr, operator, compile, cur, idx, skip } from '../parse.js';\nimport { RETURN } from './control.js';\nimport { keyword, block } from './block.js';\n\nconst TOKEN = 200;\n\nkeyword('function', TOKEN, () => {\n space();\n // Check for generator: function*\n let generator = false;\n if (cur[idx] === '*') {\n generator = true;\n skip();\n space();\n }\n const name = next(parse.id);\n name && space();\n const node = generator ? ['function*', name, parens() || null, block()] : ['function', name, parens() || null, block()];\n return node;\n});\n\n// Compile\noperator('function', (name, params, body) => {\n body = body ? compile(body) : () => undefined;\n // Normalize params: null \u2192 [], 'x' \u2192 ['x'], [',', 'a', 'b'] \u2192 ['a', 'b']\n const ps = !params ? [] : params[0] === ',' ? params.slice(1) : [params];\n // Check for rest param\n let restName = null, restIdx = -1;\n const last = ps[ps.length - 1];\n if (Array.isArray(last) && last[0] === '...') {\n restIdx = ps.length - 1;\n restName = last[1];\n ps.length--;\n }\n return ctx => {\n const fn = (...args) => {\n const l = {};\n ps.forEach((p, i) => l[p] = args[i]);\n if (restName) l[restName] = args.slice(restIdx);\n const fnCtx = new Proxy(l, {\n get: (l, k) => k in l ? l[k] : ctx[k],\n set: (l, k, v) => ((k in l ? l : ctx)[k] = v, true),\n has: (l, k) => k in l || k in ctx\n });\n try { return body(fnCtx); }\n catch (e) { if (e === RETURN) return e[0]; throw e; }\n };\n if (name) ctx[name] = fn;\n return fn;\n };\n});\n\n// Generator function (parse only, no implementation)\noperator('function*', (name, params, body) => {\n throw Error('Generator functions are not supported in evaluation');\n});\n", "// Async/await/yield: async function, async arrow, await, yield expressions\nimport { unary, expr, skip, space, cur, idx, word, operator, compile } from '../parse.js';\nimport { keyword } from './block.js';\n\nconst PREFIX = 140, ASSIGN = 20;\n\n// await expr \u2192 ['await', expr]\nunary('await', PREFIX);\n\n// yield expr \u2192 ['yield', expr]\n// yield* expr \u2192 ['yield*', expr]\nkeyword('yield', PREFIX, () => {\n space();\n if (cur[idx] === '*') {\n skip();\n space();\n return ['yield*', expr(ASSIGN)];\n }\n return ['yield', expr(ASSIGN)];\n});\n\n// async function name() {} \u2192 ['async', ['function', name, params, body]]\n// async () => {} \u2192 ['async', ['=>', params, body]]\n// async x => {} \u2192 ['async', ['=>', x, body]]\nkeyword('async', PREFIX, () => {\n space();\n // async function - check for 'function' word\n if (word('function')) return ['async', expr(PREFIX)];\n // async arrow: async () => or async x =>\n // Parse at assign precedence to catch => operator\n const params = expr(ASSIGN - .5);\n return params && ['async', params];\n});\n\n// Compile\noperator('async', fn => {\n const inner = compile(fn);\n return ctx => {\n const f = inner(ctx);\n return async function(...args) { return f(...args); };\n };\n});\noperator('await', a => (a = compile(a), async ctx => await a(ctx)));\noperator('yield', a => (a = a ? compile(a) : null, ctx => { throw { __yield__: a ? a(ctx) : undefined }; }));\noperator('yield*', a => (a = compile(a), ctx => { throw { __yield_all__: a(ctx) }; }));\n", "// Class declarations and expressions\n// class A extends B { ... }\nimport { binary, unary, token, expr, space, next, parse, literal, word, operator, compile, skip, cur, idx } from '../parse.js';\nimport { keyword, block } from './block.js';\n\nconst TOKEN = 200, PREFIX = 140, COMP = 90;\nconst STATIC = Symbol('static');\n\n// static member \u2192 ['static', member]\nunary('static', PREFIX);\n\n// instanceof: object instanceof Constructor\nbinary('instanceof', COMP);\n\n// #private fields: #x \u2192 '#x' (identifier starting with #)\ntoken('#', TOKEN, a => {\n if (a) return;\n const id = next(parse.id);\n return id ? '#' + id : void 0;\n});\n\n// class [Name] [extends Base] { body }\nkeyword('class', TOKEN, () => {\n space();\n let name = next(parse.id) || null;\n // 'extends' parsed as name? \u2192 anonymous class\n if (name === 'extends') {\n name = null;\n space();\n } else {\n space();\n if (!word('extends')) return ['class', name, null, block()];\n skip(7); // skip 'extends'\n space();\n }\n return ['class', name, expr(TOKEN), block()];\n});\n\n// Compile\nconst err = msg => { throw Error(msg) };\noperator('instanceof', (a, b) => (a = compile(a), b = compile(b), ctx => a(ctx) instanceof b(ctx)));\noperator('class', (name, base, body) => {\n base = base ? compile(base) : null;\n body = body ? compile(body) : null;\n return ctx => {\n const Parent = base ? base(ctx) : Object;\n const cls = function(...args) {\n if (!(this instanceof cls)) return err('Class constructor must be called with new');\n const instance = base ? Reflect.construct(Parent, args, cls) : this;\n if (cls.prototype.__constructor__) cls.prototype.__constructor__.apply(instance, args);\n return instance;\n };\n Object.setPrototypeOf(cls.prototype, Parent.prototype);\n Object.setPrototypeOf(cls, Parent);\n if (body) {\n const methods = Object.create(ctx);\n methods['super'] = Parent;\n const entries = body(methods);\n const items = Array.isArray(entries) && typeof entries[0]?.[0] === 'string' ? entries : [];\n for (const [k, v] of items) {\n if (k === 'constructor') cls.prototype.__constructor__ = v;\n else cls.prototype[k] = v;\n }\n }\n if (name) ctx[name] = cls;\n return cls;\n };\n});\noperator('static', a => (a = compile(a), ctx => [[STATIC, a(ctx)]]));\n", "/**\n * Regex literals: /pattern/flags\n *\n * AST (constructor form, JSON-serializable):\n * /abc/gi \u2192 ['//', 'abc', 'gi']\n * /abc/ \u2192 ['//', 'abc']\n *\n * Note: Disambiguates from division by context:\n * - `/` after value = division (falls through to prev)\n * - `/` at start or after operator = regex\n *\n * Compile:\n * ['//', 'abc', 'gi'] \u2192 new RegExp('abc', 'gi')\n */\nimport { token, skip, err, next, idx, cur, operator } from '../parse.js';\n\nconst PREFIX = 140, SLASH = 47, BSLASH = 92;\n\nconst regexChar = c => c === BSLASH ? 2 : c && c !== SLASH; // \\x = 2 chars, else 1 until /\nconst regexFlag = c => c === 103 || c === 105 || c === 109 || c === 115 || c === 117 || c === 121; // g i m s u y\n\ntoken('/', PREFIX, a => {\n if (a) return; // has left operand = division, fall through\n\n // Invalid regex start (quantifiers) or /= - fall through\n const first = cur.charCodeAt(idx);\n if (first === SLASH || first === 42 || first === 43 || first === 63 || first === 61) return;\n\n const pattern = next(regexChar);\n cur.charCodeAt(idx) === SLASH || err('Unterminated regex');\n skip(); // consume closing /\n\n const flags = next(regexFlag);\n // Validate regex syntax\n try { new RegExp(pattern, flags); }\n catch (e) { err('Invalid regex: ' + e.message); }\n\n return flags ? ['//', pattern, flags] : ['//', pattern];\n});\n\n// Compile: ['//', pattern, flags?] \u2192 RegExp\noperator('//', (a, b) => {\n const re = new RegExp(a, b || '');\n return () => re;\n});\n", "// If/else statement - else consumed internally\nimport { space, skip, parens, word, idx, seek, operator, compile } from '../parse.js';\nimport { body, keyword } from './block.js';\n\nconst STATEMENT = 5, SEMI = 59;\n\n// Check for `else` after optional semicolon\nconst checkElse = () => {\n const from = idx;\n if (space() === SEMI) skip();\n space();\n if (word('else')) return skip(4), true;\n return seek(from), false;\n};\n\n// if (cond) body [else body] - self-contained\nkeyword('if', STATEMENT + 1, () => {\n space();\n const node = ['if', parens(), body()];\n if (checkElse()) node.push(body());\n return node;\n});\n\n// Compile\noperator('if', (cond, body, alt) => {\n cond = compile(cond); body = compile(body); alt = alt !== undefined ? compile(alt) : null;\n return ctx => cond(ctx) ? body(ctx) : alt?.(ctx);\n});\n", "// Loops: while, do-while, for, for await, break, continue, return\nimport { expr, skip, space, parse, word, parens, cur, idx, operator, compile, next, seek } from '../parse.js';\nimport { body, keyword } from './block.js';\nimport { destructure } from './destruct.js';\nimport { BREAK, CONTINUE, RETURN } from './control.js';\n\nexport { BREAK, CONTINUE, RETURN };\n\nconst STATEMENT = 5, CBRACE = 125, SEMI = 59;\n\nkeyword('while', STATEMENT + 1, () => (space(), ['while', parens(), body()]));\nkeyword('do', STATEMENT + 1, () => (b => (space(), skip(5), space(), ['do', b, parens()]))(body()));\n\n// for / for await\nkeyword('for', STATEMENT + 1, () => {\n space();\n // for await (x of y)\n if (word('await')) {\n skip(5);\n return (space(), ['for await', parens(), body()]);\n }\n return ['for', parens(), body()];\n});\n\nkeyword('break', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n const from = idx;\n space();\n const c = cur.charCodeAt(idx);\n if (!c || c === CBRACE || c === SEMI || parse.newline) return ['break'];\n const label = next(parse.id);\n if (!label) return ['break'];\n // Label must be followed by end/semicolon/newline, not another token\n space();\n const cc = cur.charCodeAt(idx);\n if (!cc || cc === CBRACE || cc === SEMI || parse.newline) return ['break', label];\n // Not a valid label - backtrack\n seek(from);\n return ['break'];\n});\nkeyword('continue', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n const from = idx;\n space();\n const c = cur.charCodeAt(idx);\n if (!c || c === CBRACE || c === SEMI || parse.newline) return ['continue'];\n const label = next(parse.id);\n if (!label) return ['continue'];\n space();\n const cc = cur.charCodeAt(idx);\n if (!cc || cc === CBRACE || cc === SEMI || parse.newline) return ['continue', label];\n seek(from);\n return ['continue'];\n});\nkeyword('return', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n const c = space();\n return !c || c === CBRACE || c === SEMI || parse.newline ? ['return'] : ['return', expr(STATEMENT)];\n});\n\n// Compile - inline try/catch, use JS break/continue directly\noperator('while', (cond, body) => {\n cond = compile(cond); body = compile(body);\n return ctx => {\n let res;\n while (cond(ctx)) try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n return res;\n };\n});\n\noperator('do', (body, cond) => {\n body = compile(body); cond = compile(cond);\n return ctx => {\n let res;\n do try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n } while (cond(ctx));\n return res;\n };\n});\n\noperator('for', (head, body) => {\n // Normalize head: [';', init, cond, step] or single expr (for-in/of)\n if (Array.isArray(head) && head[0] === ';') {\n let [, init, cond, step] = head;\n init = init ? compile(init) : null;\n cond = cond ? compile(cond) : () => true;\n step = step ? compile(step) : null;\n body = compile(body);\n return ctx => {\n let res;\n for (init?.(ctx); cond(ctx); step?.(ctx)) try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n return res;\n };\n }\n // For-in/of: head is ['in', lhs, rhs] or ['of', lhs, rhs]\n if (Array.isArray(head) && (head[0] === 'in' || head[0] === 'of')) {\n let [op, lhs, rhs] = head;\n // Extract name from declaration: ['let', 'x'] \u2192 'x'\n if (Array.isArray(lhs) && (lhs[0] === 'let' || lhs[0] === 'const' || lhs[0] === 'var')) lhs = lhs[1];\n if (op === 'in') return forIn(lhs, rhs, body);\n if (op === 'of') return forOf(lhs, rhs, body);\n }\n});\n\nconst forOf = (name, iterable, body) => {\n iterable = compile(iterable); body = compile(body);\n const isPattern = Array.isArray(name);\n return ctx => {\n let res;\n const prev = isPattern ? null : ctx[name];\n for (const val of iterable(ctx)) {\n if (isPattern) destructure(name, val, ctx); else ctx[name] = val;\n try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n }\n if (!isPattern) ctx[name] = prev;\n return res;\n };\n};\n\nconst forIn = (name, obj, body) => {\n obj = compile(obj); body = compile(body);\n const isPattern = Array.isArray(name);\n return ctx => {\n let res;\n const prev = isPattern ? null : ctx[name];\n for (const key in obj(ctx)) {\n if (isPattern) destructure(name, key, ctx); else ctx[name] = key;\n try { res = body(ctx); } catch (e) {\n if (e === BREAK) break;\n if (e === CONTINUE) continue;\n if (e === RETURN) return e[0];\n throw e;\n }\n }\n if (!isPattern) ctx[name] = prev;\n return res;\n };\n};\n\noperator('break', () => () => { throw BREAK; });\noperator('continue', () => () => { throw CONTINUE; });\noperator('return', val => (val = val !== undefined ? compile(val) : null,\n ctx => { throw (RETURN[0] = val?.(ctx), RETURN); }));\n", "// try/catch/finally/throw statements\n// AST: ['catch', ['try', body], param, catchBody] or ['finally', inner, body]\nimport { space, parse, parens, expr, operator, compile } from '../parse.js';\nimport { keyword, infix, block } from './block.js';\nimport { BREAK, CONTINUE, RETURN } from './control.js';\n\nconst STATEMENT = 5;\n\nkeyword('try', STATEMENT + 1, () => ['try', block()]);\ninfix('catch', STATEMENT + 1, a => (space(), ['catch', a, parens(), block()]));\ninfix('finally', STATEMENT + 1, a => ['finally', a, block()]);\n\nkeyword('throw', STATEMENT + 1, () => {\n parse.asi && (parse.newline = false);\n space();\n if (parse.newline) throw SyntaxError('Unexpected newline after throw');\n return ['throw', expr(STATEMENT)];\n});\n\n// Compile\noperator('try', tryBody => {\n tryBody = tryBody ? compile(tryBody) : null;\n return ctx => tryBody?.(ctx);\n});\n\noperator('catch', (tryNode, catchName, catchBody) => {\n const tryBody = tryNode?.[1] ? compile(tryNode[1]) : null;\n catchBody = catchBody ? compile(catchBody) : null;\n return ctx => {\n let result;\n try {\n result = tryBody?.(ctx);\n } catch (e) {\n if (e === BREAK || e === CONTINUE || e === RETURN) throw e;\n if (catchName !== null && catchBody) {\n const had = catchName in ctx, orig = ctx[catchName];\n ctx[catchName] = e;\n try { result = catchBody(ctx); }\n finally { had ? ctx[catchName] = orig : delete ctx[catchName]; }\n } else if (catchName === null) throw e;\n }\n return result;\n };\n});\n\noperator('finally', (inner, finallyBody) => {\n inner = inner ? compile(inner) : null;\n finallyBody = finallyBody ? compile(finallyBody) : null;\n return ctx => {\n let result;\n try { result = inner?.(ctx); }\n finally { finallyBody?.(ctx); }\n return result;\n };\n});\n\noperator('throw', val => (val = compile(val), ctx => { throw val(ctx); }));\n", "// Switch/case/default\n// AST: ['switch', val, ['case', test, body], ['default', body], ...]\nimport { expr, skip, space, parens, operator, compile, idx, err, seek, parse, lookup, word, cur } from '../parse.js';\nimport { keyword } from './block.js';\nimport { BREAK } from './control.js';\n\nconst STATEMENT = 5, ASSIGN = 20, COLON = 58, SEMI = 59, CBRACE = 125;\n\n// Flag to track if we're inside switch body (case/default parsing)\nlet inSwitch = 0;\n\n// Reserve 'case' and 'default' as keywords that fail outside switch body\n// Allows property names like {case:1} ONLY when not in switch context\nconst reserve = (w, l = w.length, c = w.charCodeAt(0), prev = lookup[c]) =>\n lookup[c] = (a, prec, op) => (word(w) && !a && inSwitch) || prev?.(a, prec, op);\nreserve('case');\nreserve('default');\n\n// caseBody() - parse statements until next case/default/}\nconst caseBody = (c) => {\n const stmts = [];\n while ((c = space()) !== CBRACE && !word('case') && !word('default')) {\n if (c === SEMI) { skip(); continue; }\n stmts.push(expr(STATEMENT - .5)) || err();\n }\n return stmts.length > 1 ? [';', ...stmts] : stmts[0] || null;\n};\n\n// switchBody() - parse case/default statements\nconst switchBody = () => {\n space() === 123 || err('Expected {'); skip();\n inSwitch++;\n const cases = [];\n try {\n while (space() !== CBRACE) {\n if (word('case')) {\n seek(idx + 4); space();\n const test = expr(ASSIGN - .5);\n space() === COLON && skip();\n cases.push(['case', test, caseBody()]);\n } else if (word('default')) {\n seek(idx + 7); space() === COLON && skip();\n cases.push(['default', caseBody()]);\n } else err('Expected case or default');\n }\n } finally { inSwitch--; }\n skip();\n return cases;\n};\n\n// switch (x) { ... }\nkeyword('switch', STATEMENT + 1, () => space() === 40 && ['switch', parens(), ...switchBody()]);\n\n// Compile\noperator('switch', (val, ...cases) => {\n val = compile(val);\n if (!cases.length) return ctx => val(ctx);\n\n cases = cases.map(c => [\n c[0] === 'case' ? compile(c[1]) : null,\n (c[0] === 'case' ? c[2] : c[1])?.[0] === ';'\n ? (c[0] === 'case' ? c[2] : c[1]).slice(1).map(compile)\n : (c[0] === 'case' ? c[2] : c[1]) ? [compile(c[0] === 'case' ? c[2] : c[1])] : []\n ]);\n\n return ctx => {\n const v = val(ctx);\n let matched = false, r;\n for (const [test, stmts] of cases)\n if (matched || test === null || test(ctx) === v)\n for (matched = true, i = 0; i < stmts.length; i++)\n try { r = stmts[i](ctx); }\n catch (e) { if (e === BREAK) return r; throw e; }\n var i;\n return r;\n };\n});\n", "// Additional JS statements: debugger, with (parse-only)\n// debugger \u2192 ['debugger']\n// with (obj) body \u2192 ['with', obj, body]\nimport { space, parens } from '../parse.js';\nimport { keyword, body } from './block.js';\n\nconst STATEMENT = 5;\n\n// debugger statement\nkeyword('debugger', STATEMENT + 1, () => ['debugger']);\n\n// with statement\nkeyword('with', STATEMENT + 1, () => (space(), ['with', parens(), body()]));\n", "/**\n * Import/Export with contextual 'from' operator\n *\n * AST:\n * import './x.js' \u2192 ['import', path]\n * import X from './x.js' \u2192 ['import', ['from', 'X', path]]\n * import { a, b } from './x' \u2192 ['import', ['from', ['{}', ...], path]]\n * import * as X from './x.js' \u2192 ['import', ['from', ['as', '*', X], path]]\n * export { a } from './x' \u2192 ['export', ['from', ['{}', ...], path]]\n * export const x = 1 \u2192 ['export', decl]\n */\nimport { token, expr, space, lookup, skip, word } from '../parse.js';\nimport { keyword } from './block.js';\n\nconst STATEMENT = 5, SEQ = 10, STAR = 42;\n\n// * as prefix in import context (import * as X)\nconst prevStar = lookup[STAR];\nlookup[STAR] = (a, prec) => !a ? (skip(), '*') : prevStar?.(a, prec);\n\n// 'from' as contextual binary - only after import-like LHS (not = or ,), false in prefix for identifier fallback\ntoken('from', SEQ + 1, a => !a ? false : a[0] !== '=' && a[0] !== ',' && (space(), ['from', a, expr(SEQ + 1)]));\n\n// 'as' for aliasing: * as X, { a as b }. False in prefix for identifier fallback\ntoken('as', SEQ + 2, a => !a ? false : (space(), ['as', a, expr(SEQ + 2)]));\n\n// import: prefix that parses specifiers + from + path\n// import.meta returns ['import.meta']\nkeyword('import', STATEMENT, () => (\n word('.meta') ? (skip(5), ['import.meta']) : ['import', expr(SEQ)]\n));\n\n// export: prefix for declarations or re-exports (use STATEMENT to capture const/let/function)\nkeyword('export', STATEMENT, () => (space(), ['export', expr(STATEMENT)]));\n\n// default: prefix for export default (NOT switch default: which has colon)\nkeyword('default', SEQ + 1, () => space() !== 58 && (space(), ['default', expr(SEQ)]));\n\n// Compile stubs - import/export are parse-only (no runtime semantics)\nimport { operator, compile } from '../parse.js';\noperator('import', () => () => undefined);\noperator('export', () => () => undefined);\noperator('from', (a, b) => () => undefined);\noperator('as', (a, b) => () => undefined);\noperator('default', (a) => compile(a));\n", "// ASI: newline at `;` precedence level triggers nary `;`\nimport { parse, prec } from '../parse.js';\n\n// Set prec.asi before importing to customize (default: prec[';'])\nconst lvl = prec.asi ?? prec[';'];\n\nparse.asi = (a, p, expr, b, items) => p < lvl && (b = expr(lvl - .5)) && (\n items = b?.[0] === ';' ? b.slice(1) : [b],\n a?.[0] === ';' ? (a.push(...items), a) : [';', a, ...items]\n);\n", "/**\n * jessie: Practical JS subset\n *\n * Builds on justin with statements: blocks, variables, if/else,\n * loops, functions, try/catch, switch, throw.\n */\nimport './justin.js';\n\n// Statement features (var.js must come before destruct.js)\nimport './feature/var.js';\nimport './feature/function.js';\nimport './feature/async.js';\nimport './feature/class.js';\nimport './feature/regex.js';\nimport './feature/destruct.js';\n\n// Control flow\nimport './feature/if.js';\nimport './feature/loop.js';\nimport './feature/try.js';\nimport './feature/switch.js';\nimport './feature/statement.js'; // debugger, with, labeled statements\n\n// Module system\nimport './feature/module.js';\nimport './feature/accessor.js';\n\n// Automatic Semicolon Insertion\nimport './feature/asi.js';\n\nexport * from './parse.js';\nexport { default } from './subscript.js';\n", "var sprae = require(\"./sprae.js\").default; var jessie = require(\"subscript/jessie\"); sprae.use({ compile: jessie }); module.exports = sprae; var cur = document.currentScript;\nvar prefix = cur.getAttribute(\"prefix\") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;\nvar start = cur.getAttribute(\"start\") ?? cur.dataset.start ?? cur.dataset.spraeStart;\ncur.removeAttribute(\"prefix\"); cur.removeAttribute(\"start\"); delete cur.dataset.prefix; delete cur.dataset.start; delete cur.dataset.spraePrefix; delete cur.dataset.spraeStart;\nif (prefix) sprae.use({ prefix });\nif (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["_dispose", "_state", "_on", "_off", "_add", "prefix", "isCE", "signal", "effect", "computed", "batch", "untracked", "directive", "modifier", "currentDir", "currentEl", "elHint", "err", "_dirs", "sprae", "dir", "compile", "parse", "cache", "use", "decorate", "mo", "mutate", "start", "frag", "dashcase", "camelcase", "attr", "clsx", "sched", "throttle", "debounce", "core_default", "init_core", "__esmMin", "init_store", "el", "fn", "hint", "expr", "msg", "display", "root", "state", "master", "store_default", "fx", "offs", "i", "current", "apply", "name", "short", "value", "prev", "add", "mel", "dirs", "_attrs", "rec", "child", "mchild", "next", "e", "cb", "_out", "result", "v", "config", "mods", "params", "mod", "wrapFn", "k", "values", "mutations", "m", "tpl", "doc", "content", "attributes", "ref", "childNodes", "a", "str", "match", "_", "c", "s", "ms", "_planned", "_depth", "arg", "schedule", "throttled", "dirty", "immediate", "_blocked", "_count", "_c", "_signals", "_change", "_touch", "_set", "_parent", "sandbox", "store", "list", "create", "shallow", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "descs", "computed", "isMut", "mut", "fn", "r", "batch", "length", "touch", "bump", "asplice", "i", "s", "prev", "wrap", "sigs", "ver", "t", "val", "fresh", "_s", "_v", "untracked", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "Signal", "Computed", "init_signal", "__esmMin", "v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_first", "_list", "fx", "_prev", "if_default", "_else", "init_if", "__esmMin", "init_core", "el", "state", "_a", "_b", "_holder", "_el", "core_default", "_state", "frag", "mutate", "throttle", "match", "s", "_off", "_on", "cb", "value", "_prev", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "cur", "node", "root", "active", "off", "pos", "r", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "_prev", "clearAttr", "v", "c", "clsx", "style_default", "init_style", "__esmMin", "init_core", "el", "st", "ex", "name", "_static", "v", "attr", "k", "fx_default", "init_fx", "__esmMin", "fn", "value_default", "init_value", "__esmMin", "init_core", "el", "state", "core_default", "value", "_from", "_to", "attr", "v", "setter", "ref_default", "init_ref", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "el", "state", "result", "scope_default", "init_scope", "__esmMin", "init_core", "init_store", "el", "rootState", "state", "_state", "store", "init", "holder", "_frag", "frag", "values", "k", "d", "_signals", "computed", "_set", "v", "signal", "untracked", "core_default", "rowHandler", "each_default", "init_each", "__esmMin", "init_core", "s", "k", "_signals", "v", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "doc", "holder", "rowMap", "rows", "items", "keys", "cur", "keyed", "rm", "r", "mkrow", "c", "i", "scope", "el", "frag", "insert", "pending", "f", "core_default", "update", "throttle", "untracked", "mutate", "src", "newl", "prevl", "lenChanged", "newRows", "seen", "moved", "misplaced", "id", "row", "next", "n", "fix", "a", "b", "t", "_state", "cb", "value", "_", "off", "effect", "_change", "_touch", "parse", "_off", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "isCE", "spread_default", "init_spread", "__esmMin", "init_core", "target", "value", "ce", "isCE", "key", "attr", "dashcase", "event_default", "init_event", "__esmMin", "init_core", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "init_sequence", "__esmMin", "init_core", "el", "state", "expr", "names", "cur", "off", "evaluate", "parse", "steps", "step", "i", "length", "prev", "str", "name", "mods", "next", "fn", "e", "trigger", "decorate", "_poff", "isTemplate", "html_default", "init_html", "__esmMin", "init_core", "v", "el", "state", "_el", "html", "doc", "holder", "_dispose", "frag", "untracked", "core_default", "_a", "_state", "portal_default", "init_portal", "__esmMin", "el", "state", "expr", "doc", "comment", "currentTarget", "value", "root", "target", "hidden_default", "init_hidden", "__esmMin", "el", "value", "mount_default", "init_mount", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "cleanup", "decorate", "result", "fn", "_dispose", "change_default", "init_change", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "coerce", "o", "handler", "decorate", "fn", "_dispose", "intersect", "intersect_default", "init_intersect", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "once", "trigger", "decorate", "entry", "fn", "io", "entries", "_dispose", "resize", "resize_default", "init_resize", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "trigger", "decorate", "size", "fn", "ro", "entries", "entry", "rect", "_dispose", "sprae_exports", "__export", "batch", "computed", "debounce", "sprae_default", "dispose", "effect", "signal", "core_default", "start", "store_default", "throttle", "untracked", "use", "dir", "recipes", "recipe", "parseTime", "scheduler", "keys", "keyMatch", "hasSemi", "init_sprae", "__esmMin", "init_store", "init_core", "init_signal", "init_if", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "init_sequence", "init_html", "init_portal", "init_hidden", "init_mount", "init_change", "init_intersect", "init_resize", "mount_default", "change_default", "directive", "__default", "spread_default", "class_default", "text_default", "html_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "_else", "each_default", "portal_default", "hidden_default", "intersect_default", "resize_default", "target", "dirName", "mods", "expr", "state", "create", "hasMods", "el", "update", "change", "trigger", "count", "decorate", "_dispose", "evaluate", "parse", "_out", "out", "isCE", "_state", "off", "_d", "_off", "name", "str", "t", "n", "u", "fn", "modifier", "a", "b", "sched", "e", "_done", "_fn", "_pd", "doc", "pdHandler", "_skip", "_how", "k", "s", "d", "q", "esc", "ch", "segs", "prev", "seg", "obs", "event_default", "p", "sequence_default", "signal_exports", "idx", "cur", "parse", "err", "loc", "next", "skip", "seek", "expr", "space", "peek", "id", "word", "parens", "lookup", "prec", "token", "binary", "unary", "literal", "nary", "group", "access", "operators", "operator", "compile", "init_parse", "__esmMin", "s", "msg", "at", "lines", "last", "before", "ptr", "chr", "after", "node", "is", "from", "l", "n", "p", "end", "cc", "newNode", "fn", "nl", "c", "w", "op", "map", "prev", "matched", "r", "a", "curPrec", "curOp", "right", "b", "post", "val", "args", "v", "ctx", "PERIOD", "_0", "_9", "_E", "_e", "PLUS", "MINUS", "UNDERSCORE", "_n", "_a", "_f", "_A", "_F", "strip", "num", "charTest", "init_number", "__esmMin", "init_parse", "s", "a", "str", "next", "c", "cur", "idx", "skip", "err", "parse", "lookup", "i", "cfg", "pre", "base", "BSLASH", "DQUOTE", "SQUOTE", "esc", "parseString", "init_string", "__esmMin", "init_parse", "q", "a", "_", "s", "parse", "skip", "next", "c", "cur", "idx", "err", "lookup", "ASSIGN", "assign", "ops", "init_assignment", "__esmMin", "init_parse", "op", "binary", "a", "fn", "obj", "key", "ctx", "compile", "o", "k", "v", "operator", "b", "LOR", "LAND", "PREFIX", "init_logical", "__esmMin", "init_parse", "binary", "unary", "operator", "a", "compile", "ctx", "b", "OR", "XOR", "AND", "SHIFT", "PREFIX", "init_bitwise", "__esmMin", "init_parse", "binary", "unary", "operator", "a", "compile", "ctx", "b", "COMP", "init_comparison", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "EQ", "init_equality", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "ADD", "MULT", "PREFIX", "init_arithmetic", "__esmMin", "init_parse", "binary", "unary", "operator", "a", "b", "compile", "ctx", "POSTFIX", "inc", "init_increment", "__esmMin", "init_parse", "token", "a", "expr", "fn", "obj", "key", "ctx", "compile", "operator", "b", "o", "k", "STATEMENT", "SEQ", "ACCESS", "seq", "init_group", "__esmMin", "init_parse", "group", "nary", "args", "compile", "ctx", "a", "operator", "unsafe", "ACCESS", "err", "isLval", "call", "prop", "init_access", "__esmMin", "init_parse", "k", "access", "binary", "msg", "operator", "a", "b", "compile", "ctx", "hasSparse", "args", "arg", "obj", "path", "n", "fn", "o", "cache", "subscript", "PUA", "compileTemplate", "isAST", "subscript_default", "init_subscript", "__esmMin", "init_number", "init_string", "init_assignment", "init_logical", "init_bitwise", "init_comparison", "init_equality", "init_arithmetic", "init_increment", "init_group", "init_access", "init_parse", "strings", "values", "compile", "parse", "code", "acc", "i", "ast", "inject", "node", "v", "SPACE", "space", "_a", "comments", "init_comment", "__esmMin", "init_parse", "parse", "s", "e", "cc", "j", "c", "cur", "idx", "i", "seek", "EQ", "init_identity", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "LOR", "init_nullish", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "EXP", "ASSIGN", "err", "init_pow", "__esmMin", "init_parse", "init_access", "binary", "operator", "a", "b", "compile", "ctx", "msg", "isLval", "prop", "obj", "path", "COMP", "init_membership", "__esmMin", "init_parse", "binary", "operator", "a", "b", "compile", "ctx", "ASSIGN", "SHIFT", "err", "init_bitwise_unsigned", "__esmMin", "init_parse", "init_access", "msg", "binary", "operator", "a", "b", "compile", "ctx", "isLval", "prop", "o", "k", "flatten", "destructure", "init_destruct", "__esmMin", "init_parse", "items", "pattern", "value", "ctx", "op", "raw", "used", "item", "rest", "k", "key", "binding", "def", "val", "compile", "i", "ASSIGN", "err", "init_assign_logical", "__esmMin", "init_parse", "init_destruct", "init_access", "msg", "binary", "operator", "a", "b", "pattern", "compile", "ctx", "destructure", "isLval", "prop", "obj", "path", "o", "k", "STATEMENT", "OBRACE", "CBRACE", "keyword", "infix", "block", "body", "init_block", "__esmMin", "init_parse", "op", "prec", "map", "c", "l", "prev", "lookup", "r", "a", "curPrec", "curOp", "from", "idx", "cur", "parse", "peek", "seek", "loc", "space", "err", "skip", "expr", "init_literal", "__esmMin", "init_parse", "init_block", "literal", "keyword", "ASSIGN", "init_ternary", "__esmMin", "init_parse", "token", "a", "b", "c", "expr", "next", "operator", "compile", "ctx", "BREAK", "CONTINUE", "RETURN", "init_control", "__esmMin", "ASSIGN", "init_arrow", "__esmMin", "init_parse", "init_control", "binary", "operator", "a", "b", "ps", "restIdx", "restName", "last", "isBlock", "compile", "ctx", "args", "l", "p", "i", "fnCtx", "k", "v", "r", "e", "RETURN", "PREFIX", "init_spread", "__esmMin", "init_parse", "unary", "operator", "a", "compile", "ctx", "ACCESS", "init_optional", "__esmMin", "init_parse", "init_access", "token", "a", "b", "cc", "space", "skip", "expr", "operator", "compile", "unsafe", "ctx", "k", "args", "arg", "container", "prop", "c", "p", "obj", "o", "fn", "PREFIX", "init_unary", "__esmMin", "init_parse", "init_block", "unary", "keyword", "word", "skip", "expr", "operator", "a", "compile", "ctx", "obj", "key", "call", "target", "args", "argList", "f", "ACC", "ASSIGN", "OPAREN", "CPAREN", "OBRACE", "CBRACE", "accessor", "init_accessor", "__esmMin", "init_parse", "kind", "a", "space", "name", "next", "parse", "cur", "idx", "skip", "params", "expr", "token", "operator", "body", "compile", "ctx", "s", "param", "v", "ASSIGN", "TOKEN", "isObject", "init_collection", "__esmMin", "init_parse", "init_accessor", "a", "group", "binary", "operator", "b", "compile", "props", "p", "ctx", "obj", "acc", "e", "f", "ACC", "n", "desc", "body", "ACCESS", "BACKTICK", "DOLLAR", "OBRACE", "BSLASH", "esc", "parseBody", "prev", "init_template", "__esmMin", "init_parse", "parts", "s", "c", "cur", "idx", "skip", "expr", "err", "lookup", "a", "prec", "parse", "p", "operator", "compile", "ctx", "tag", "strings", "exprs", "strs", "e", "init_justin", "__esmMin", "init_subscript", "init_parse", "init_comment", "init_identity", "init_nullish", "init_pow", "init_membership", "init_bitwise_unsigned", "init_assign_logical", "init_literal", "init_ternary", "init_arrow", "init_spread", "init_optional", "init_unary", "init_collection", "init_template", "parse", "STATEMENT", "SEQ", "ASSIGN", "decl", "varOp", "init_var", "__esmMin", "init_parse", "init_block", "init_destruct", "keyword", "node", "expr", "space", "decls", "d", "ctx", "pattern", "val", "v", "compile", "destructure", "operator", "name", "TOKEN", "init_function", "__esmMin", "init_parse", "init_control", "init_block", "keyword", "space", "generator", "cur", "idx", "skip", "name", "next", "parse", "parens", "block", "operator", "params", "body", "compile", "ps", "restName", "restIdx", "last", "ctx", "fn", "args", "l", "p", "i", "fnCtx", "k", "v", "e", "RETURN", "PREFIX", "ASSIGN", "init_async", "__esmMin", "init_parse", "init_block", "unary", "keyword", "space", "cur", "idx", "skip", "expr", "word", "params", "operator", "fn", "inner", "compile", "ctx", "f", "args", "a", "TOKEN", "PREFIX", "COMP", "STATIC", "err", "init_class", "__esmMin", "init_parse", "init_block", "unary", "binary", "token", "a", "id", "next", "parse", "keyword", "space", "name", "word", "block", "skip", "expr", "msg", "operator", "b", "compile", "ctx", "base", "body", "Parent", "cls", "args", "instance", "methods", "entries", "items", "k", "v", "PREFIX", "SLASH", "BSLASH", "regexChar", "regexFlag", "init_regex", "__esmMin", "init_parse", "c", "token", "a", "first", "cur", "idx", "pattern", "next", "err", "skip", "flags", "e", "operator", "b", "re", "STATEMENT", "SEMI", "checkElse", "init_if", "__esmMin", "init_parse", "init_block", "from", "idx", "space", "skip", "word", "seek", "keyword", "node", "parens", "body", "operator", "cond", "alt", "compile", "ctx", "STATEMENT", "CBRACE", "SEMI", "forOf", "forIn", "init_loop", "__esmMin", "init_parse", "init_block", "init_destruct", "init_control", "keyword", "space", "parens", "body", "b", "skip", "word", "parse", "from", "idx", "c", "cur", "label", "next", "cc", "seek", "expr", "operator", "cond", "compile", "ctx", "res", "e", "BREAK", "CONTINUE", "RETURN", "head", "init", "step", "op", "lhs", "rhs", "name", "iterable", "isPattern", "prev", "val", "destructure", "obj", "key", "STATEMENT", "init_try", "__esmMin", "init_parse", "init_block", "init_control", "keyword", "block", "infix", "a", "space", "parens", "parse", "expr", "operator", "tryBody", "compile", "ctx", "tryNode", "catchName", "catchBody", "result", "e", "BREAK", "CONTINUE", "RETURN", "had", "orig", "inner", "finallyBody", "val", "STATEMENT", "ASSIGN", "COLON", "SEMI", "CBRACE", "inSwitch", "reserve", "caseBody", "switchBody", "init_switch", "__esmMin", "init_parse", "init_block", "init_control", "w", "l", "c", "prev", "lookup", "a", "prec", "op", "word", "stmts", "space", "skip", "expr", "err", "cases", "seek", "idx", "test", "keyword", "parens", "operator", "val", "compile", "ctx", "v", "matched", "r", "i", "e", "BREAK", "STATEMENT", "init_statement", "__esmMin", "init_parse", "init_block", "keyword", "space", "parens", "body", "STATEMENT", "SEQ", "STAR", "prevStar", "init_module", "__esmMin", "init_parse", "init_block", "lookup", "a", "prec", "skip", "token", "space", "expr", "keyword", "word", "operator", "b", "compile", "lvl", "init_asi", "__esmMin", "init_parse", "prec", "parse", "a", "p", "expr", "b", "items", "jessie_exports", "__export", "access", "binary", "compile", "cur", "subscript_default", "err", "expr", "group", "id", "idx", "literal", "loc", "lookup", "nary", "next", "operator", "operators", "parens", "parse", "peek", "prec", "seek", "skip", "space", "token", "unary", "word", "init_jessie", "__esmMin", "init_justin", "init_var", "init_function", "init_async", "init_class", "init_regex", "init_destruct", "init_if", "init_loop", "init_try", "init_switch", "init_statement", "init_module", "init_accessor", "init_asi", "init_parse", "init_subscript", "sprae", "jessie", "cur", "prefix", "start", "el"]
|
|
7
7
|
}
|