sprae 13.2.1 → 13.3.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/readme.md CHANGED
@@ -397,35 +397,20 @@ sprae.use(signals)
397
397
 
398
398
  ## Configuration
399
399
 
400
- ### CSP-safe evaluator
401
-
402
- Default uses `new Function` (fast, but requires `unsafe-eval` CSP).<br/>
403
- For strict CSP, use the pre-built variant or wire [jessie](https://github.com/dy/subscript) manually:
404
-
405
- ```html
406
- <script src="//unpkg.com/sprae/dist/sprae-csp.umd.js" data-start></script>
407
- ```
408
-
409
400
  ```js
410
- import sprae from 'sprae'
401
+ import sprae, { directive, parse, modifier } from 'sprae'
411
402
  import jessie from 'subscript/jessie'
412
- sprae.use({ compile: jessie })
413
- ```
414
403
 
415
- ### Custom prefix
404
+ sprae.use({
405
+ // CSP-safe evaluator: <script src="//unpkg.com/sprae/dist/sprae-csp.umd.js" data-start></script>
406
+ // or define manually
407
+ compile: jessie,
416
408
 
417
- ```js
418
- sprae.use({ prefix: 'data-' })
419
- ```
420
- ```html
421
- <div data-text="message">...</div>
422
- ```
423
-
424
- ### Custom directive
425
-
426
- ```js
427
- import { directive, parse } from 'sprae'
409
+ // custom prefix: <div data-text="message">...</div>
410
+ prefix: 'data-'
411
+ })
428
412
 
413
+ // Custom directive
429
414
  directive.id = (el, state, expr) => value => el.id = value
430
415
 
431
416
  directive.timer = (el, state, expr) => {
@@ -436,17 +421,12 @@ directive.timer = (el, state, expr) => {
436
421
  return () => clearInterval(id)
437
422
  }
438
423
  }
439
- ```
440
-
441
- ### Custom modifier
442
424
 
443
- ```js
444
- import { modifier } from 'sprae'
425
+ // Custom modifier
445
426
  modifier.log = (fn) => (e) => (console.log(e.type), fn(e))
446
427
  ```
447
428
 
448
429
 
449
-
450
430
  ## Integration
451
431
 
452
432
  ### JSX / Next.js
@@ -523,48 +503,48 @@ Works with [define-element](https://github.com/dy/define-element), Lit, or any C
523
503
  * Attribute order matters: `:each` before `:text`, not after.
524
504
  * Async expressions work: `<div :text="await fetchData()"></div>`
525
505
  * Dispose: `sprae.dispose(el)` or `el[Symbol.dispose]()`
526
- * No `key` needed — `:each` uses direct list mapping, not DOM diffing.
506
+ * No `key` needed — `:each` auto-keys object items by identity; primitives use positional mapping.
527
507
  * `this` refers to current element, but prefer `:ref` or `:mount` for element access.
528
508
  * Properties prefixed with `_` are untracked.
529
509
 
530
510
 
531
511
  ## FAQ
532
512
 
533
- **What is sprae?**
534
- : ~5kb script that adds reactivity to HTML via `:attribute="expression"`. No build step, no new syntax.
513
+ **What is sprae?**<br>
514
+ ~5kb script that adds reactivity to HTML via `:attribute="expression"`. No build step, no new syntax.
535
515
 
536
- **Learning curve?**
537
- : If you know HTML and JS, you know sprae. Just `:attribute="expression"`.
516
+ **Learning curve?**<br>
517
+ If you know HTML and JS, you know sprae. Just `:attribute="expression"`.
538
518
 
539
- **How does it compare to Alpine?**
540
- : 3x lighter, pluggable signals, prop modifiers, event chains. Faster in [benchmarks](https://krausest.github.io/js-framework-benchmark/).
519
+ **How does it compare to Alpine?**<br>
520
+ 3x lighter, pluggable signals, prop modifiers, event chains. Faster in [benchmarks](https://krausest.github.io/js-framework-benchmark/).
541
521
 
542
- **How does it compare to React/Vue?**
543
- : No build step, no virtual DOM. Can inject into [JSX](#jsx--nextjs) for server components without framework overhead.
522
+ **How does it compare to React/Vue?**<br>
523
+ No build step, no virtual DOM. Can inject into [JSX](#jsx--nextjs) for server components without framework overhead.
544
524
 
545
- **Why signals?**
546
- : Signals are the emerging [standard](https://github.com/tc39/proposal-signals) for reactivity. Pluggable — first to support native signals when browsers ship.
525
+ **Why signals?**<br>
526
+ Signals are the emerging [standard](https://github.com/tc39/proposal-signals) for reactivity. Pluggable — first to support native signals when browsers ship.
547
527
 
548
- **Is new Function unsafe?**
549
- : No more than inline `onclick` handlers. For strict CSP, use the [safe evaluator](#csp-safe-evaluator).
528
+ **Is new Function unsafe?**<br>
529
+ No more than inline `onclick` handlers. For strict CSP, use the [safe evaluator](#csp-safe-evaluator).
550
530
 
551
- **Components?**
552
- : Use [define-element](https://github.com/dy/define-element) for declarative web components, or any CE library. For simpler cases, [manage duplication](https://tailwindcss.com/docs/styling-with-utility-classes#managing-duplication) with templates/includes.
531
+ **Components?**<br>
532
+ Use [define-element](https://github.com/dy/define-element) for declarative web components, or any CE library. For simpler cases, [manage duplication](https://tailwindcss.com/docs/styling-with-utility-classes#managing-duplication) with templates/includes.
553
533
 
554
- **TypeScript?**
555
- : Full types included.
534
+ **TypeScript?**<br>
535
+ Full types included.
556
536
 
557
- **Browser support?**
558
- : Any browser with [Proxy](https://caniuse.com/proxy) (all modern browsers, no IE).
537
+ **Browser support?**<br>
538
+ Any browser with [Proxy](https://caniuse.com/proxy) (all modern browsers, no IE).
559
539
 
560
- **Does it scale?**
561
- : State is plain reactive objects — scales as far as your data model does. Use [store](#store) with computed getters and methods for complex apps.
540
+ **Does it scale?**<br>
541
+ State is plain reactive objects — scales as far as your data model does. Use [store](#store) with computed getters and methods for complex apps.
562
542
 
563
- **Is it production-ready?**
564
- : It is used by a few SaaS systems and landing pages of big guys.
543
+ **Is it production-ready?**<br>
544
+ It is used by a few SaaS systems and landing pages of big guys.
565
545
 
566
- **Is it backed by a company?**
567
- : Indie project. [Support it](https://github.com/sponsors/dy).
546
+ **Is it backed by a company?**<br>
547
+ Indie project. [Support it](https://github.com/sponsors/dy).
568
548
 
569
549
 
570
550
  ## Used by
package/signal.js CHANGED
@@ -40,6 +40,7 @@ export const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (
40
40
  */
41
41
  export const effect = (fn, _teardown, _fx, _deps) => (
42
42
  _fx = (prev) => {
43
+ if (!fn) return // disposed during batch flush
43
44
  let tmp = _teardown;
44
45
  _teardown = null;
45
46
  tmp?.call?.();
package/sprae.js CHANGED
@@ -67,31 +67,33 @@ Object.assign(directive, {
67
67
  */
68
68
  const dir = (target, name, expr, state) => {
69
69
  let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._
70
+ let hasMods = mods.length > 0
70
71
 
71
72
  return () => {
72
- // decorate trigger to resolve target from modifiers (parent, root, body, etc.)
73
- let change = signal(0),
74
-
75
- trigger = decorate(Object.assign(() => change.value++, { target }), mods),
73
+ let el = target, update, change, trigger, count = 0
76
74
 
75
+ if (hasMods) {
76
+ // modifiers can retarget the update or schedule it, so they keep the trigger indirection
77
+ change = signal(0)
78
+ trigger = decorate(Object.assign(() => change.value++, { target }), mods)
77
79
  el = trigger.target ?? target
80
+ }
78
81
 
79
- let update = create(el, state, expr, dirName)
82
+ update = create(el, state, expr, dirName)
80
83
 
81
84
  if (!update?.call) return update?.[_dispose]
82
85
 
83
- let count = 0,
84
- evaluate = update.eval ?? parse(expr).bind(el),
86
+ let evaluate = update.eval ?? parse(expr).bind(el),
85
87
  _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
86
88
 
87
89
  // use element's own state for expression evaluation, unless it's a custom element
88
90
  // (custom elements: directives are parent prop setters, must evaluate against parent state)
89
91
  if (!isCE(el)) state = el[_state] ?? state
90
92
 
91
- let off = effect(() => {
92
- const result = change.value == count ? (trigger()) : (count = change.value, _out = evaluate(state, update))
93
+ let off = hasMods ? effect(() => {
94
+ change.value == count ? trigger() : (count = change.value, _out = evaluate(state, update))
93
95
  return out
94
- })
96
+ }) : effect(() => (_out = evaluate(state, update), out))
95
97
  if (!(_state in el)) return off
96
98
  let _d = 0
97
99
  return () => { if (_d) return; _d = 1; off(); update[_off] ? update[_off]() : el[_dispose]?.() }
package/store.js CHANGED
@@ -14,6 +14,9 @@ export const _change = Symbol('change')
14
14
  /** Symbol for stashed setter on computed values */
15
15
  export const _set = Symbol('set')
16
16
 
17
+ /** Symbol for parent scope link */
18
+ const _parent = Symbol('parent')
19
+
17
20
  // a hack to simulate sandbox for `with` in evaluator
18
21
  let sandbox = true
19
22
 
@@ -58,7 +61,7 @@ export const store = (values, parent) => {
58
61
  // proxy conducts prop access to signals
59
62
  let state = new Proxy(Object.assign(signals, {
60
63
  [_change]: signal(keyCount),
61
- [_signals]: signals
64
+ [_signals]: signals,
62
65
  }), {
63
66
  get: (_, k) => {
64
67
  if (k in signals) {
@@ -104,7 +107,7 @@ export const store = (values, parent) => {
104
107
  },
105
108
 
106
109
  // subscribe to length when spreading
107
- ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),
110
+ ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals).filter(k => k !== _parent)),
108
111
 
109
112
  // sandbox prevents writing to global
110
113
  has: (_, k) => {
@@ -113,6 +116,7 @@ export const store = (values, parent) => {
113
116
  return sandbox
114
117
  }
115
118
  })
119
+ Object.defineProperty(signals, _parent, { value: parent, configurable: true })
116
120
 
117
121
  // init signals for values
118
122
  const descs = Object.getOwnPropertyDescriptors(values)
@@ -201,6 +205,7 @@ const list = (values, parent = globalThis) => {
201
205
  // dispose notifies any signal deps, like :each
202
206
  deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),
203
207
  })
208
+ Object.defineProperty(signals, _parent, { value: parent, configurable: true })
204
209
 
205
210
  return state
206
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../core.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../core.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../directive/class.js"],"names":[],"mappings":"AAWe,8BANJ,OAAO,eAEP,MAAM,QACN,MAAM,GACJ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAapE"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../directive/class.js"],"names":[],"mappings":"AAWe,8BANJ,OAAO,eAEP,MAAM,QACN,MAAM,GACJ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CA4BpE"}
@@ -1,6 +1,8 @@
1
- declare function _default(tpl: HTMLTemplateElement | Element, state: any, expr: string): {
2
- eval: Function;
3
- [Symbol.dispose]: () => void;
1
+ declare function _default(tpl: any, state: any, expr: any): {
2
+ (value: any): () => void;
3
+ eval: (state: any, cb?: (value: any) => any) => any;
4
+ [_off]: () => void;
4
5
  };
5
6
  export default _default;
7
+ import { _off } from "../core.js";
6
8
  //# sourceMappingURL=each.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"each.d.ts","sourceRoot":"","sources":["../../directive/each.js"],"names":[],"mappings":"AAUe,+BALJ,mBAAmB,GAAG,OAAO,oBAE7B,MAAM,GACJ;IAAE,IAAI,WAAW;IAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CA4G5D"}
1
+ {"version":3,"file":"each.d.ts","sourceRoot":"","sources":["../../directive/each.js"],"names":[],"mappings":"AAwBe;;;;EAmLd;;qBA3M6F,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../signal.js"],"names":[],"mappings":"AAmBO,uBAJM,CAAC,KACH,CAAC,6CACC,OAAO,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAgBzC;AAOM,2BAHI,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,yCACvB,MAAM,IAAI,CAqBtB;AAQM,yBAJM,CAAC,MACH,MAAM,CAAC,0EACL,OAAO,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAWzC;AAQM,sBAJM,CAAC,MACH,MAAM,CAAC,gCACL,CAAC,CAMb;AAQM,0BAJM,CAAC,MACH,MAAM,CAAC,wBACL,CAAC,CAE+F"}
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../signal.js"],"names":[],"mappings":"AAmBO,uBAJM,CAAC,KACH,CAAC,6CACC,OAAO,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAgBzC;AAOM,2BAHI,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,yCACvB,MAAM,IAAI,CAsBtB;AAQM,yBAJM,CAAC,MACH,MAAM,CAAC,0EACL,OAAO,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAWzC;AAQM,sBAJM,CAAC,MACH,MAAM,CAAC,gCACL,CAAC,CAMb;AAQM,0BAJM,CAAC,MACH,MAAM,CAAC,wBACL,CAAC,CAE+F"}
@@ -1 +1 @@
1
- {"version":3,"file":"sprae.d.ts","sourceRoot":"","sources":["../sprae.js"],"names":[],"mappings":";kBAQqI,WAAW;kBAH9H,YAAY;uBAC6B,WAAW;uBAAX,WAAW;yBAAX,WAAW;sBAAX,WAAW;0BAAX,WAAW;sBAE+D,WAAW;oBAAX,WAAW;yBAAX,WAAW;yBAAX,WAAW;AAyPhI,4BAFL,OAAO,OAEsC"}
1
+ {"version":3,"file":"sprae.d.ts","sourceRoot":"","sources":["../sprae.js"],"names":[],"mappings":";kBAQqI,WAAW;kBAH9H,YAAY;uBAC6B,WAAW;uBAAX,WAAW;yBAAX,WAAW;sBAAX,WAAW;0BAAX,WAAW;sBAE+D,WAAW;oBAAX,WAAW;yBAAX,WAAW;yBAAX,WAAW;AA2PhI,4BAFL,OAAO,OAEsC"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.js"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,qCAAyC;AAEzC,2EAA2E;AAC3E,oCAAuC;AAEvC,mDAAmD;AACnD,iCAAiC;AA0B1B,sBAVe,CAAC,0BACZ,CAAC,iBAEC,aAAa,CAAC,CAAC,CAAC,CAiG5B;;;;;0BA7GY,CAAC,IACD,CAAC,GAAG;IAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.js"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,qCAAyC;AAEzC,2EAA2E;AAC3E,oCAAuC;AAEvC,mDAAmD;AACnD,iCAAiC;AA6B1B,sBAVe,CAAC,0BACZ,CAAC,iBAEC,aAAa,CAAC,CAAC,CAAC,CAkG5B;;;;;0BA9GY,CAAC,IACD,CAAC,GAAG;IAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE"}