@alloy-js/core 0.23.0-dev.8 → 0.23.0-dev.9

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.
Files changed (106) hide show
  1. package/dist/src/components/Prose.js +2 -2
  2. package/dist/src/components/Prose.js.map +1 -1
  3. package/dist/src/components/Scope.d.ts.map +1 -1
  4. package/dist/src/components/Scope.js +2 -0
  5. package/dist/src/components/Scope.js.map +1 -1
  6. package/dist/src/components/SourceDirectory.d.ts.map +1 -1
  7. package/dist/src/components/SourceDirectory.js +1 -2
  8. package/dist/src/components/SourceDirectory.js.map +1 -1
  9. package/dist/src/content-slot.js +2 -2
  10. package/dist/src/content-slot.js.map +1 -1
  11. package/dist/src/context.js +2 -2
  12. package/dist/src/context.js.map +1 -1
  13. package/dist/src/debug/effects.d.ts +4 -0
  14. package/dist/src/debug/effects.d.ts.map +1 -1
  15. package/dist/src/debug/effects.js.map +1 -1
  16. package/dist/src/debug/effects.test.js +22 -24
  17. package/dist/src/debug/effects.test.js.map +1 -1
  18. package/dist/src/debug/index.d.ts +2 -1
  19. package/dist/src/debug/index.d.ts.map +1 -1
  20. package/dist/src/debug/index.js +2 -1
  21. package/dist/src/debug/index.js.map +1 -1
  22. package/dist/src/debug/symbols.d.ts +6 -0
  23. package/dist/src/debug/symbols.d.ts.map +1 -1
  24. package/dist/src/debug/symbols.js +9 -0
  25. package/dist/src/debug/symbols.js.map +1 -1
  26. package/dist/src/index.d.ts +1 -1
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/index.js +1 -1
  29. package/dist/src/index.js.map +1 -1
  30. package/dist/src/reactive-union-set.d.ts.map +1 -1
  31. package/dist/src/reactive-union-set.js +13 -3
  32. package/dist/src/reactive-union-set.js.map +1 -1
  33. package/dist/src/reactivity.d.ts +34 -6
  34. package/dist/src/reactivity.d.ts.map +1 -1
  35. package/dist/src/reactivity.js +161 -123
  36. package/dist/src/reactivity.js.map +1 -1
  37. package/dist/src/render-stack.d.ts +1 -0
  38. package/dist/src/render-stack.d.ts.map +1 -1
  39. package/dist/src/render-stack.js +4 -0
  40. package/dist/src/render-stack.js.map +1 -1
  41. package/dist/src/render.d.ts.map +1 -1
  42. package/dist/src/render.js +15 -13
  43. package/dist/src/render.js.map +1 -1
  44. package/dist/src/scheduler.d.ts +5 -0
  45. package/dist/src/scheduler.d.ts.map +1 -1
  46. package/dist/src/scheduler.js +24 -1
  47. package/dist/src/scheduler.js.map +1 -1
  48. package/dist/src/symbols/output-scope.d.ts.map +1 -1
  49. package/dist/src/symbols/output-scope.js +2 -2
  50. package/dist/src/symbols/output-scope.js.map +1 -1
  51. package/dist/src/symbols/output-symbol.d.ts.map +1 -1
  52. package/dist/src/symbols/output-symbol.js +2 -2
  53. package/dist/src/symbols/output-symbol.js.map +1 -1
  54. package/dist/src/symbols/symbol-flow.d.ts.map +1 -1
  55. package/dist/src/symbols/symbol-flow.js +2 -2
  56. package/dist/src/symbols/symbol-flow.js.map +1 -1
  57. package/dist/src/utils.d.ts.map +1 -1
  58. package/dist/src/utils.js +2 -5
  59. package/dist/src/utils.js.map +1 -1
  60. package/dist/test/lazy-isempty.test.d.ts +2 -0
  61. package/dist/test/lazy-isempty.test.d.ts.map +1 -0
  62. package/dist/test/lazy-isempty.test.js +89 -0
  63. package/dist/test/lazy-isempty.test.js.map +1 -0
  64. package/dist/test/reactive-union-set-disposers.test.d.ts +2 -0
  65. package/dist/test/reactive-union-set-disposers.test.d.ts.map +1 -0
  66. package/dist/test/reactive-union-set-disposers.test.js +98 -0
  67. package/dist/test/reactive-union-set-disposers.test.js.map +1 -0
  68. package/dist/test/reactivity/shallow-reactive.test.d.ts +2 -0
  69. package/dist/test/reactivity/shallow-reactive.test.d.ts.map +1 -0
  70. package/dist/test/reactivity/shallow-reactive.test.js +52 -0
  71. package/dist/test/reactivity/shallow-reactive.test.js.map +1 -0
  72. package/dist/test/scheduler-extended.test.d.ts +2 -0
  73. package/dist/test/scheduler-extended.test.d.ts.map +1 -0
  74. package/dist/test/scheduler-extended.test.js +96 -0
  75. package/dist/test/scheduler-extended.test.js.map +1 -0
  76. package/dist/test/scheduler.test.d.ts +2 -0
  77. package/dist/test/scheduler.test.d.ts.map +1 -0
  78. package/dist/test/scheduler.test.js +46 -0
  79. package/dist/test/scheduler.test.js.map +1 -0
  80. package/dist/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +1 -1
  82. package/src/components/Prose.tsx +1 -1
  83. package/src/components/Scope.tsx +2 -0
  84. package/src/components/SourceDirectory.tsx +1 -2
  85. package/src/content-slot.tsx +2 -2
  86. package/src/context.ts +3 -3
  87. package/src/debug/effects.test.tsx +24 -31
  88. package/src/debug/effects.ts +4 -0
  89. package/src/debug/index.ts +2 -0
  90. package/src/debug/symbols.ts +9 -0
  91. package/src/index.ts +0 -1
  92. package/src/reactive-union-set.ts +14 -3
  93. package/src/reactivity.ts +189 -130
  94. package/src/render-stack.ts +5 -0
  95. package/src/render.ts +16 -14
  96. package/src/scheduler.ts +25 -1
  97. package/src/symbols/output-scope.ts +1 -2
  98. package/src/symbols/output-symbol.ts +1 -2
  99. package/src/symbols/symbol-flow.ts +8 -2
  100. package/src/utils.tsx +2 -4
  101. package/temp/api.json +425 -14
  102. package/test/lazy-isempty.test.tsx +106 -0
  103. package/test/reactive-union-set-disposers.test.tsx +112 -0
  104. package/test/reactivity/shallow-reactive.test.tsx +56 -0
  105. package/test/scheduler-extended.test.tsx +122 -0
  106. package/test/scheduler.test.tsx +50 -0
package/dist/src/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { memo as _$memo, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
2
  import { ref, toRaw } from "@vue/reactivity";
3
- import { createCustomContext, effect, getContext, memo, onCleanup, root, untrack } from "./reactivity.js";
3
+ import { createCustomContext, effect, ensureIsEmpty, getContext, memo, onCleanup, root, untrack } from "./reactivity.js";
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
 
6
6
  import { isComponentCreator } from "./runtime/component.js";
@@ -201,9 +201,6 @@ export function mapJoin(src, cb, rawOptions = {}) {
201
201
  items = items.filter(item => item !== null && item !== undefined && typeof item !== "boolean");
202
202
  }
203
203
  const context = getContext();
204
- if (context) {
205
- context.isEmpty ??= ref(true);
206
- }
207
204
  // this is important to access here in reactive context so we are
208
205
  // notified of new items from reactives.
209
206
  const itemsLen = items.length;
@@ -239,7 +236,7 @@ export function mapJoin(src, cb, rawOptions = {}) {
239
236
  mapped[startIndex * 2] = createCustomContext(cb => {
240
237
  return root(disposer => {
241
238
  const nestedContext = getContext();
242
- const isEmptyFlag = nestedContext.isEmpty;
239
+ const isEmptyFlag = ensureIsEmpty(nestedContext);
243
240
  slot.disposer = disposer;
244
241
  disposer();
245
242
  effect(prev => {
@@ -1 +1 @@
1
- {"version":3,"names":["ref","toRaw","createCustomContext","effect","getContext","memo","onCleanup","root","untrack","isComponentCreator","defaultJoinOptions","joiner","ender","mapJoin","src","cb","rawOptions","options","undefined","itemSlots","getOrCreateSlot","index","slot","isEmpty","firstNonEmptyIndex","lastNonEmptyIndex","mapped","enderMemo","createJoinerRef","ensureJoinerSlot","updateJoinerForIndex","joinerRef","length","value","previousNonEmpty","findPrevNonEmpty","rightSlot","shouldShow","newValue","findNextNonEmpty","from","i","Math","max","min","recalculateNonEmptyBounds","first","refreshJoiners","applyEmptyStateChange","wasEmpty","previousItemsLen","disposer","itemsSource","itemsSourceRaw","items","Array","isArray","skipFalsy","filter","item","context","itemsLen","compare","getCompareFunction","mapper","getMapperFunction","startIndex","emptyFlag","childrenWithContent","cleanupIndex","nestedContext","isEmptyFlag","prev","debug","name","type","isIterable","compareArray","compareMap","Set","mapArray","mapMap","elem1","elem2","record1","record2","x","next","join","mergedOptions","joined","entries","push","children","fn","preserveFragments","map","collectChildren","flat","childrenArray","c","findKeyedChild","tag","child","isKeyedChild","findKeyedChildren","keyedChildren","findUnkeyedChildren","traverseOutput","sourceDirectory","visitor","visitDirectory","contents","kind","visitFile","baseListPropsToMapJoinArgs","props","punctuation","comma","semicolon","_$memo","softline","_$createIntrinsic","hardline","literalline","line","space","doubleHardline","enderPunctuation"],"sources":["../../src/utils.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ref","toRaw","createCustomContext","effect","ensureIsEmpty","getContext","memo","onCleanup","root","untrack","isComponentCreator","defaultJoinOptions","joiner","ender","mapJoin","src","cb","rawOptions","options","undefined","itemSlots","getOrCreateSlot","index","slot","isEmpty","firstNonEmptyIndex","lastNonEmptyIndex","mapped","enderMemo","createJoinerRef","ensureJoinerSlot","updateJoinerForIndex","joinerRef","length","value","previousNonEmpty","findPrevNonEmpty","rightSlot","shouldShow","newValue","findNextNonEmpty","from","i","Math","max","min","recalculateNonEmptyBounds","first","refreshJoiners","applyEmptyStateChange","wasEmpty","previousItemsLen","disposer","itemsSource","itemsSourceRaw","items","Array","isArray","skipFalsy","filter","item","context","itemsLen","compare","getCompareFunction","mapper","getMapperFunction","startIndex","emptyFlag","childrenWithContent","cleanupIndex","nestedContext","isEmptyFlag","prev","debug","name","type","isIterable","compareArray","compareMap","Set","mapArray","mapMap","elem1","elem2","record1","record2","x","next","join","mergedOptions","joined","entries","push","children","fn","preserveFragments","map","collectChildren","flat","childrenArray","c","findKeyedChild","tag","child","isKeyedChild","findKeyedChildren","keyedChildren","findUnkeyedChildren","traverseOutput","sourceDirectory","visitor","visitDirectory","contents","kind","visitFile","baseListPropsToMapJoinArgs","props","punctuation","comma","semicolon","_$memo","softline","_$createIntrinsic","hardline","literalline","line","space","doubleHardline","enderPunctuation"],"sources":["../../src/utils.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,GAAG,EAAOC,KAAK,QAAQ,iBAAiB;AAEjD,SACEC,mBAAmB,EAGnBC,MAAM,EACNC,aAAa,EACbC,UAAU,EACVC,IAAI,EACJC,SAAS,EACTC,IAAI,EACJC,OAAO,QACF,iBAAiB;AACxB;;AAEA,SAGEC,kBAAkB,QACb,wBAAwB;AAoB/B,MAAMC,kBAA+B,GAAG;EACtCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,OAAO,SAASC,OAAOA,CACrBC,GAAiD,EACjDC,EAA0D,EAC1DC,UAAuB,GAAG,CAAC,CAAC,EACZ;EAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,OAAO,GAAG;IAAE,GAAGP,kBAAkB;IAAE,GAAGM;EAAW,CAAC;EACxD,MAAMJ,KAAK,GACTK,OAAO,CAACL,KAAK,KAAK,IAAI,GAAGK,OAAO,CAACN,MAAM,GAAGM,OAAO,CAACL,KAAK,IAAIM,SAAS;EAQtE,MAAMC,SAAwB,GAAG,EAAE;EAEnC,SAASC,eAAeA,CAACC,KAAa,EAAe;IACnD,IAAIC,IAAI,GAAGH,SAAS,CAACE,KAAK,CAAC;IAC3B,IAAI,CAACC,IAAI,EAAE;MACTA,IAAI,GAAG;QAAEC,OAAO,EAAExB,GAAG,CAAC,IAAI;MAAE,CAAC;MAC7BoB,SAAS,CAACE,KAAK,CAAC,GAAGC,IAAI;IACzB;IACA,OAAOA,IAAI;EACb;EACA,MAAME,kBAAkB,GAAGzB,GAAG,CAAC,CAAC,CAAC,CAAC;EAClC,MAAM0B,iBAAiB,GAAG1B,GAAG,CAAC,CAAC,CAAC,CAAC;EACjC,MAAM2B,MAAkB,GAAG,EAAE;EAC7B,IAAIC,SAAuC;;EAE3C;EACA,SAASC,eAAeA,CAAA,EAA8B;IACpD,OAAO7B,GAAG,CAAUmB,SAAS,CAAC;EAChC;;EAEA;EACA,SAASW,gBAAgBA,CAACR,KAAa,EAAE;IACvC,IAAIA,KAAK,KAAK,CAAC,IAAIJ,OAAO,CAACN,MAAM,KAAKO,SAAS,EAAE;MAC/C;IACF;IAEA,MAAMI,IAAI,GAAGF,eAAe,CAACC,KAAK,CAAC;IACnCC,IAAI,CAACX,MAAM,KAAKiB,eAAe,CAAC,CAAC;IACjCF,MAAM,CAACL,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGC,IAAI,CAACX,MAAO;EACtC;;EAEA;EACA,SAASmB,oBAAoBA,CAACT,KAAa,EAAE;IAC3C,IAAIA,KAAK,KAAK,CAAC,IAAIJ,OAAO,CAACN,MAAM,KAAKO,SAAS,EAAE;MAC/C;IACF;IAEA,MAAMI,IAAI,GAAGH,SAAS,CAACE,KAAK,CAAC;IAC7B,MAAMU,SAAS,GAAGT,IAAI,EAAEX,MAAM;IAC9B,IAAI,CAACoB,SAAS,EAAE;MACd;IACF;IAEA,IAAIV,KAAK,IAAIF,SAAS,CAACa,MAAM,EAAE;MAC7B,IAAID,SAAS,CAACE,KAAK,KAAKf,SAAS,EAAE;QACjCa,SAAS,CAACE,KAAK,GAAGf,SAAS;MAC7B;MACA;IACF;IAEA,MAAMgB,gBAAgB,GAAGC,gBAAgB,CAACd,KAAK,GAAG,CAAC,CAAC;IACpD,MAAMe,SAAS,GAAGjB,SAAS,CAACE,KAAK,CAAC;IAClC,MAAMgB,UAAU,GACdH,gBAAgB,KAAK,CAAC,CAAC,IACvBE,SAAS,KAAKlB,SAAS,IACvBkB,SAAS,CAACb,OAAO,CAACU,KAAK,KAAK,KAAK;IAEnC,MAAMK,QAAQ,GAAGD,UAAU,GAAGpB,OAAO,CAACN,MAAM,GAAGO,SAAS;IACxD,IAAIa,SAAS,CAACE,KAAK,KAAKK,QAAQ,EAAE;MAChCP,SAAS,CAACE,KAAK,GAAGK,QAAQ;IAC5B;EACF;;EAEA;EACA,SAASC,gBAAgBA,CAACC,IAAY,EAAE;IACtC,KAAK,IAAIC,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACH,IAAI,EAAE,CAAC,CAAC,EAAEC,CAAC,GAAGtB,SAAS,CAACa,MAAM,EAAES,CAAC,EAAE,EAAE;MACzD,MAAMnB,IAAI,GAAGH,SAAS,CAACsB,CAAC,CAAC;MACzB,IAAInB,IAAI,IAAIA,IAAI,CAACC,OAAO,CAACU,KAAK,KAAK,KAAK,EAAE;QACxC,OAAOQ,CAAC;MACV;IACF;IACA,OAAO,CAAC,CAAC;EACX;;EAEA;EACA,SAASN,gBAAgBA,CAACK,IAAY,EAAE;IACtC,KAAK,IAAIC,CAAC,GAAGC,IAAI,CAACE,GAAG,CAACJ,IAAI,EAAErB,SAAS,CAACa,MAAM,GAAG,CAAC,CAAC,EAAES,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC9D,MAAMnB,IAAI,GAAGH,SAAS,CAACsB,CAAC,CAAC;MACzB,IAAInB,IAAI,IAAIA,IAAI,CAACC,OAAO,CAACU,KAAK,KAAK,KAAK,EAAE;QACxC,OAAOQ,CAAC;MACV;IACF;IACA,OAAO,CAAC,CAAC;EACX;;EAEA;EACA,SAASI,yBAAyBA,CAAA,EAAG;IACnC,MAAMC,KAAK,GAAGP,gBAAgB,CAAC,CAAC,CAAC;IACjCf,kBAAkB,CAACS,KAAK,GAAGa,KAAK;IAChCrB,iBAAiB,CAACQ,KAAK,GACrBa,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGX,gBAAgB,CAAChB,SAAS,CAACa,MAAM,GAAG,CAAC,CAAC;IAC5De,cAAc,CAAC,CAAC;EAClB;;EAEA;EACA,SAASA,cAAcA,CAAA,EAAG;IACxB,IAAI9B,OAAO,CAACN,MAAM,KAAKO,SAAS,EAAE;MAChC;IACF;IAEA,KAAK,IAAIuB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGtB,SAAS,CAACa,MAAM,EAAES,CAAC,EAAE,EAAE;MACzC,MAAMnB,IAAI,GAAGH,SAAS,CAACsB,CAAC,CAAC;MACzB,IAAInB,IAAI,EAAEX,MAAM,EAAE;QAChBmB,oBAAoB,CAACW,CAAC,CAAC;MACzB;IACF;EACF;;EAEA;EACA,SAASO,qBAAqBA,CAC5B3B,KAAa,EACbE,OAAgB,EAChB0B,QAAiB,EACjB;IACA,IAAIA,QAAQ,KAAK1B,OAAO,EAAE;MACxB;IACF;IAEA,IAAIA,OAAO,EAAE;MACX,IAAIC,kBAAkB,CAACS,KAAK,KAAKZ,KAAK,EAAE;QACtCG,kBAAkB,CAACS,KAAK,GAAGM,gBAAgB,CAAClB,KAAK,GAAG,CAAC,CAAC;MACxD;MACA,IAAII,iBAAiB,CAACQ,KAAK,KAAKZ,KAAK,EAAE;QACrCI,iBAAiB,CAACQ,KAAK,GAAGE,gBAAgB,CAACd,KAAK,GAAG,CAAC,CAAC;MACvD;IACF,CAAC,MAAM;MACL,IAAIG,kBAAkB,CAACS,KAAK,KAAK,CAAC,CAAC,IAAIZ,KAAK,GAAGG,kBAAkB,CAACS,KAAK,EAAE;QACvET,kBAAkB,CAACS,KAAK,GAAGZ,KAAK;MAClC;MACA,IAAIA,KAAK,GAAGI,iBAAiB,CAACQ,KAAK,EAAE;QACnCR,iBAAiB,CAACQ,KAAK,GAAGZ,KAAK;MACjC;IACF;IAEAS,oBAAoB,CAACT,KAAK,CAAC;IAC3BS,oBAAoB,CAACT,KAAK,GAAG,CAAC,CAAC;EACjC;EACA,IAAI6B,gBAAgB,GAAG,CAAC;EAExB5C,SAAS,CAAC,MAAM;IACd,KAAK,MAAMgB,IAAI,IAAIH,SAAS,EAAE;MAC5BG,IAAI,CAAC6B,QAAQ,GAAG,CAAC;IACnB;EACF,CAAC,CAAC;EAEF,OAAO,MAAM;IACX,MAAMC,WAAW,GAAGtC,GAAG,CAAC,CAAC;IACzB;IACA,MAAMuC,cAAc,GAAGrD,KAAK,CAACoD,WAAW,CAAC;IACzC,IAAIE,KAAK,GACPC,KAAK,CAACC,OAAO,CAACH,cAAc,CAAC,GAAID,WAAW,GAAW,CAAC,GAAGA,WAAW,CAAC;IAEzE,IAAInC,OAAO,CAACwC,SAAS,EAAE;MACrBH,KAAK,GAAGA,KAAK,CAACI,MAAM,CACjBC,IAAI,IACHA,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAKzC,SAAS,IAAI,OAAOyC,IAAI,KAAK,SAC3D,CAAC;IACH;IAEA,MAAMC,OAAO,GAAGxD,UAAU,CAAC,CAAC;IAC5B;IACA;IACA,MAAMyD,QAAQ,GAAGP,KAAK,CAACtB,MAAM;IAC7B,MAAM8B,OAAY,GAAGC,kBAAkB,CAACV,cAAc,CAAC;IACvD,MAAMW,MAAW,GAAGC,iBAAiB,CAACZ,cAAc,CAAC;IAErD,OAAO7C,OAAO,CAAC,MAAM;MACnB,IAAI0D,UAAU,GAAG,CAAC;MAClB,OAEEA,UAAU,GAAGL,QAAQ,IAAIK,UAAU,GAAG/C,SAAS,CAACa,MAAM,EACtDkC,UAAU,EAAE,EACZ;QACA,MAAM5C,IAAI,GAAGH,SAAS,CAAC+C,UAAU,CAAC;QAClC,IAAI,CAAC5C,IAAI,IAAI,CAACwC,OAAO,CAACR,KAAK,CAACY,UAAU,CAAC,EAAE5C,IAAI,CAACqC,IAAW,CAAC,EAAE;UAC1D;QACF;MACF;MAEA,IAAIO,UAAU,GAAG,CAAC,IAAIA,UAAU,GAAGL,QAAQ,EAAE;QAC3C;QACAhC,gBAAgB,CAACqC,UAAU,CAAC;MAC9B;MAEA,OAAOA,UAAU,GAAGL,QAAQ,EAAEK,UAAU,EAAE,EAAE;QAC1C,MAAM5C,IAAI,GAAGF,eAAe,CAAC8C,UAAU,CAAC;QACxC5C,IAAI,CAACqC,IAAI,GAAGL,KAAK,CAACY,UAAU,CAAC;QAC7B,MAAMC,SAAS,GAAG7C,IAAI,CAACC,OAAO;QAE9B,IAAID,IAAI,CAAC6B,QAAQ,EAAE;UACjB,IAAIgB,SAAS,CAAClC,KAAK,KAAK,KAAK,EAAE;YAC7B,IAAI2B,OAAO,EAAE;cACXA,OAAO,CAACQ,mBAAmB,EAAE;YAC/B;YACAD,SAAS,CAAClC,KAAK,GAAG,IAAI;YACtBe,qBAAqB,CAACkB,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;UAChD;UACA5C,IAAI,CAAC6B,QAAQ,CAAC,CAAC;QACjB;QAEA,MAAMkB,YAAY,GAAGH,UAAU;QAE/BxC,MAAM,CAACwC,UAAU,GAAG,CAAC,CAAC,GAAGjE,mBAAmB,CAAEc,EAAE,IAAK;UACnD,OAAOR,IAAI,CAAE4C,QAAQ,IAAK;YACxB,MAAMmB,aAAa,GAAGlE,UAAU,CAAC,CAAE;YACnC,MAAMmE,WAAW,GAAGpE,aAAa,CAACmE,aAAa,CAAC;YAEhDhD,IAAI,CAAC6B,QAAQ,GAAGA,QAAQ;YACxBA,QAAQ,CAAC,CAAC;YACVjD,MAAM,CACHsE,IAAc,IAAK;cAClB,MAAMjD,OAAO,GAAGgD,WAAW,CAACtC,KAAK;cACjC,OAAOzB,OAAO,CAAC,MAAM;gBACnB,IAAIc,IAAI,CAACC,OAAO,CAACU,KAAK,KAAKV,OAAO,EAAE;kBAClCD,IAAI,CAACC,OAAO,CAACU,KAAK,GAAGV,OAAO;gBAC9B;gBACA,MAAM0B,QAAQ,GAAGuB,IAAI,IAAI,IAAI;gBAE7BxB,qBAAqB,CAACqB,YAAY,EAAE9C,OAAO,EAAE0B,QAAQ,CAAC;gBAEtD,OAAO1B,OAAO;cAChB,CAAC,CAAC;YACJ,CAAC,EACDL,SAAS,EACT;cACEuD,KAAK,EAAE;gBACLC,IAAI,EAAE,kBAAkBL,YAAY,EAAE;gBACtCM,IAAI,EAAE;cACR;YACF,CACF,CAAC;YACD5D,EAAE,CAACiD,MAAM,CAACV,KAAK,CAACe,YAAY,CAAC,EAAEA,YAAY,CAAC,CAAC;UAC/C,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFxC,gBAAgB,CAACqC,UAAU,CAAC;MAC9B;MAEAxC,MAAM,CAACM,MAAM,GAAGkC,UAAU,GAAG,CAAC;MAC9B,IAAIxC,MAAM,CAACM,MAAM,GAAG,CAAC,EAAE;QACrB,IAAIpB,KAAK,KAAKM,SAAS,EAAE;UACvBS,SAAS,KAAKtB,IAAI,CAAC,MACjBoB,iBAAiB,CAACQ,KAAK,KAAK,CAAC,CAAC,GAAGf,SAAS,GAAGN,KAC/C,CAAC;UACDc,MAAM,CAACA,MAAM,CAACM,MAAM,GAAG,CAAC,CAAC,GAAGL,SAAS;QACvC,CAAC,MAAM;UACLD,MAAM,CAACA,MAAM,CAACM,MAAM,GAAG,CAAC,CAAC,GAAGd,SAAS;QACvC;MACF;MACA,OAAOgD,UAAU,GAAGhB,gBAAgB,EAAEgB,UAAU,EAAE,EAAE;QAClD,MAAM5C,IAAI,GAAGH,SAAS,CAAC+C,UAAU,CAAC;QAClC,IAAI,CAAC5C,IAAI,EAAE;UACT;QACF;QAEAA,IAAI,CAAC6B,QAAQ,GAAG,CAAC;QACjB,IAAI7B,IAAI,CAACC,OAAO,CAACU,KAAK,KAAK,KAAK,EAAE;UAChC,IAAI2B,OAAO,EAAE;YACXA,OAAO,CAACQ,mBAAmB,EAAE;UAC/B;UACA9C,IAAI,CAACC,OAAO,CAACU,KAAK,GAAG,IAAI;UACzBe,qBAAqB,CAACkB,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;QAChD;MACF;MAEA,IAAIhB,gBAAgB,KAAKW,QAAQ,EAAE;QACjC1C,SAAS,CAACa,MAAM,GAAG6B,QAAQ;QAC3BhB,yBAAyB,CAAC,CAAC;MAC7B;MAEAK,gBAAgB,GAAGW,QAAQ;MAC3B,OAAOnC,MAAM;IACf,CAAC,CAAC;EACJ,CAAC;;EAED;EACA,SAASqC,kBAAkBA,CAACX,WAA0C,EAAE;IACtE,OAAOG,KAAK,CAACC,OAAO,CAACJ,WAAW,CAAC,IAAIwB,UAAU,CAACxB,WAAW,CAAC,GACxDyB,YAAY,GACZC,UAAU;EAChB;;EAEA;EACA,SAASb,iBAAiBA,CAACb,WAA0C,EAAE;IACrE,OACIG,KAAK,CAACC,OAAO,CAACJ,WAAW,CAAC,IACxBA,WAAW,YAAY2B,GAAG,IAC1BH,UAAU,CAACxB,WAAW,CAAC,GAEzB4B,QAAQ,GACRC,MAAM;EACZ;EACA;EACA,SAASJ,YAAYA,CAACK,KAAQ,EAAEC,KAAQ,EAAE;IACxC,OAAOD,KAAK,KAAKC,KAAK;EACxB;;EAEA;EACA,SAASL,UAAUA,CAACM,OAAe,EAAEC,OAAe,EAAE;IACpD,OAAOD,OAAO,CAAC,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,CAAC,IAAID,OAAO,CAAC,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,CAAC;EAC/D;;EAEA;EACA,SAASL,QAAQA,CAACrB,IAAO,EAAEtC,KAAa,EAAE;IACxC,OAAQN,EAAE,CAAS4C,IAAI,EAAEtC,KAAK,CAAC;EACjC;;EAEA;EACA,SAAS4D,MAAMA,CAACtB,IAAY,EAAEtC,KAAa,EAAE;IAC3C,OAAON,EAAE,CAAC4C,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEtC,KAAK,CAAC;EACpC;;EAEA;EACA,SAASuD,UAAUA,CAAIU,CAAU,EAAoB;IACnD,OAAO,OAAQA,CAAC,CAASC,IAAI,KAAK,UAAU;EAC9C;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAClB1E,GAAsB,EACtBG,OAAoB,GAAG,CAAC,CAAC,EACf;EACV,MAAMwE,aAAa,GAAG;IAAE,GAAG/E,kBAAkB;IAAE,GAAGO;EAAQ,CAAC;EAC3D,MAAMyE,MAAkB,GAAG,EAAE;EAC7B,MAAM9E,KAAK,GACT6E,aAAa,CAAC7E,KAAK,KAAK,IAAI,GAAG6E,aAAa,CAAC9E,MAAM,GAAG8E,aAAa,CAAC7E,KAAK;EAC3EE,GAAG,GAAGyC,KAAK,CAACf,IAAI,CAAC1B,GAAkB,CAAC;EAEpC,KAAK,MAAM,CAACO,KAAK,EAAEsC,IAAI,CAAC,IAAI7C,GAAG,CAAC6E,OAAO,CAAC,CAAC,EAAE;IACzCD,MAAM,CAACE,IAAI,CAACjC,IAAI,CAAC;IACjB,IAAItC,KAAK,KAAKP,GAAG,CAACkB,MAAM,GAAG,CAAC,EAAE;MAC5B0D,MAAM,CAACE,IAAI,CAACH,aAAa,CAAC9E,MAAO,CAAC;IACpC;EACF;EAEA,IAAIG,GAAG,CAACkB,MAAM,GAAG,CAAC,IAAIpB,KAAK,EAAE;IAC3B8E,MAAM,CAACE,IAAI,CAAChF,KAAK,CAAC;EACpB;EAEA,OAAO8E,MAAM;AACf;AAQA;AACA;AACA;AACA;AACA,OAAO,SAASG,QAAQA,CACtBC,EAAkB,EAClB7E,OAAwB,GAAG,CAAC,CAAC,EACb;EAChB,OAAOZ,IAAI,CAAC,MAAM;IAChB,MAAMwF,QAAQ,GAAGC,EAAE,CAAC,CAAC;IACrB,IAAI7E,OAAO,CAAC8E,iBAAiB,IAAIxC,KAAK,CAACC,OAAO,CAACqC,QAAQ,CAAC,EAAE;MACxD,OAAOA,QAAQ,CAACG,GAAG,CAACC,eAAe,CAAC;IACtC,CAAC,MAAM;MACL,OAAOA,eAAe,CAACJ,QAAQ,CAAC;IAClC;EACF,CAAC,CAAC;EAEF,SAASI,eAAeA,CAACJ,QAAkB,EAAY;IACrD,IAAItC,KAAK,CAACC,OAAO,CAACqC,QAAQ,CAAC,EAAE;MAC3B,OAAOA,QAAQ,CAACG,GAAG,CAACC,eAAe,CAAC,CAACC,IAAI,CAAC,CAAC;IAC7C,CAAC,MAAM,IACL,OAAOL,QAAQ,KAAK,UAAU,IAC9B,CAACpF,kBAAkB,CAACoF,QAAQ,CAAC,EAC7B;MACA,OAAOI,eAAe,CAACJ,QAAQ,CAAC,CAAC,CAAC;IACpC,CAAC,MAAM;MACL,OAAOA,QAAQ;IACjB;EACF;AACF;AAEA,OAAO,SAASM,aAAaA,CAC3BL,EAAkB,EAClB7E,OAAyB,EACb;EACZ,MAAMmF,CAAC,GAAGP,QAAQ,CAACC,EAAE,EAAE7E,OAAO,CAAC,CAAC,CAAC;EACjC,IAAIsC,KAAK,CAACC,OAAO,CAAC4C,CAAC,CAAC,EAAE;IACpB,OAAOA,CAAC;EACV,CAAC,MAAM,IAAIA,CAAC,KAAKlF,SAAS,EAAE;IAC1B,OAAO,EAAE;EACX,CAAC,MAAM;IACL,OAAO,CAACkF,CAAC,CAAC;EACZ;AACF;AAEA,OAAO,SAASC,cAAcA,CAACR,QAAoB,EAAES,GAAW,EAAE;EAChE,KAAK,MAAMC,KAAK,IAAIV,QAAQ,EAAE;IAC5B,IAAIW,YAAY,CAACD,KAAK,CAAC,IAAIA,KAAK,CAACD,GAAG,KAAKA,GAAG,EAAE;MAC5C,OAAOC,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb;AAEA,OAAO,SAASE,iBAAiBA,CAACZ,QAAoB,EAAES,GAAW,EAAE;EACnE,MAAMI,aAAiC,GAAG,EAAE;EAC5C,KAAK,MAAMH,KAAK,IAAIV,QAAQ,EAAE;IAC5B,IAAIW,YAAY,CAACD,KAAK,CAAC,IAAIA,KAAK,CAACD,GAAG,KAAKA,GAAG,EAAE;MAC5CI,aAAa,CAACd,IAAI,CAACW,KAAK,CAAC;IAC3B;EACF;EACA,OAAOG,aAAa;AACtB;AAEA,OAAO,SAASC,mBAAmBA,CAACd,QAAoB,EAAE;EACxD,OAAOA,QAAQ,CAACnC,MAAM,CAAE6C,KAAK,IAAK,CAACC,YAAY,CAACD,KAAK,CAAC,CAAC;AACzD;AAEA,OAAO,SAASC,YAAYA,CAACD,KAAe,EAA6B;EACvE,OAAO9F,kBAAkB,CAAC8F,KAAK,CAAC,IAAI,CAAC,CAACA,KAAK,CAACD,GAAG;AACjD;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeM,cAAcA,CAClCC,eAAgC,EAChCC,OAAsB,EACtB;EACA,MAAMA,OAAO,CAACC,cAAc,CAACF,eAAe,CAAC;EAC7C,KAAK,MAAMlD,IAAI,IAAIkD,eAAe,CAACG,QAAQ,EAAE;IAC3C,IAAIrD,IAAI,CAACsD,IAAI,KAAK,WAAW,EAAE;MAC7B,MAAML,cAAc,CAACjD,IAAI,EAAEmD,OAAO,CAAC;IACrC,CAAC,MAAM;MACL,MAAMA,OAAO,CAACI,SAAS,CAACvD,IAAI,CAAC;IAC/B;EACF;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASwD,0BAA0BA,CAACC,KAAoB,EAAe;EAC5E,IAAIzG,MAAM,EAAE0G,WAAW;EACvB,IAAI,QAAQ,IAAID,KAAK,EAAE;IACrBzG,MAAM,GAAGyG,KAAK,CAACzG,MAAM;EACvB,CAAC,MAAM;IACL0G,WAAW,GACTD,KAAK,CAACE,KAAK,GAAG,GAAG,GACfF,KAAK,CAACG,SAAS,GAAG,GAAG,GACrB,EAAE;IAEN5G,MAAM,IAED0G,WAAW,EAAAG,MAAA,OACXA,MAAA,SAAAJ,KAAK,CAACK,QAAQ,MAAAC,iBAAA,cAEbF,MAAA,SAAAJ,KAAK,CAACO,QAAQ,MAAAD,iBAAA,cAEdF,MAAA,SAAAJ,KAAK,CAACQ,WAAW,MAAAF,iBAAA,cAEjBF,MAAA,SAAAJ,KAAK,CAACS,IAAI,MAAAH,iBAAA,aAEVF,MAAA,SAAAJ,KAAK,CAACU,KAAK,cAEXN,MAAA,SAAAJ,KAAK,CAACW,cAAc,OAAAL,iBAAA,aAAAA,iBAAA,eAAAA,iBAAA,WAKb,EAEZ;EACH;EAEA,MAAM9G,KAAK,GACT,OAAO,IAAIwG,KAAK,GAAGA,KAAK,CAACxG,KAAK,GAC5BwG,KAAK,CAACY,gBAAgB,GAAGX,WAAW,GACpCnG,SAAS;EAEb,OAAO;IAAEP,MAAM;IAAEC;EAAM,CAAC;AAC1B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import "../testing/extend-expect.js";
2
+ //# sourceMappingURL=lazy-isempty.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-isempty.test.d.ts","sourceRoot":"","sources":["../../test/lazy-isempty.test.tsx"],"names":[],"mappings":"AAMA,OAAO,6BAA6B,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { ref } from "@vue/reactivity";
3
+ import { describe, expect, it } from "vitest";
4
+ import { Show } from "../src/components/Show.js";
5
+ import { createContentSlot } from "../src/content-slot.js";
6
+ import { ensureIsEmpty, getContext } from "../src/reactivity.js";
7
+ import { printTree, renderTree } from "../src/render.js";
8
+ import "../testing/extend-expect.js";
9
+ describe("lazy isEmpty / _lastEmpty", () => {
10
+ it("context starts without isEmpty ref allocated", () => {
11
+ let ctx = null;
12
+ function Capture() {
13
+ ctx = getContext();
14
+ return "content";
15
+ }
16
+ renderTree(_$createComponent(Capture, {}));
17
+
18
+ // The isEmpty ref should NOT be allocated unless someone observes it.
19
+ expect(ctx).not.toBeNull();
20
+ expect(ctx.isEmpty).toBeUndefined();
21
+ expect(ctx._lastEmpty).toBe(false);
22
+ });
23
+ it("ensureIsEmpty lazily allocates the isEmpty ref", () => {
24
+ let ctx = null;
25
+ function Capture() {
26
+ ctx = getContext();
27
+ return "content";
28
+ }
29
+ renderTree(_$createComponent(Capture, {}));
30
+ expect(ctx.isEmpty).toBeUndefined();
31
+ const isEmptyRef = ensureIsEmpty(ctx);
32
+ expect(ctx.isEmpty).toBeDefined();
33
+ expect(isEmptyRef).toBe(ctx.isEmpty);
34
+ });
35
+ it("_lastEmpty is true for empty component, false for non-empty", () => {
36
+ let emptyCtx = null;
37
+ let fullCtx = null;
38
+ function EmptyCapture() {
39
+ emptyCtx = getContext();
40
+ return false;
41
+ }
42
+ function FullCapture() {
43
+ fullCtx = getContext();
44
+ return "has content";
45
+ }
46
+ renderTree([_$createComponent(EmptyCapture, {}), _$createComponent(FullCapture, {})]);
47
+ expect(emptyCtx._lastEmpty).toBe(true);
48
+ expect(fullCtx._lastEmpty).toBe(false);
49
+ });
50
+ it("ContentSlot triggers ensureIsEmpty and tracks reactively", () => {
51
+ const ContentSlot = createContentSlot();
52
+ const showContent = ref(false);
53
+ const tree = renderTree([_$memo(() => ContentSlot.isEmpty && "empty"), _$createComponent(ContentSlot, {
54
+ get children() {
55
+ return _$createComponent(Show, {
56
+ get when() {
57
+ return showContent.value;
58
+ },
59
+ children: "content"
60
+ });
61
+ }
62
+ })]);
63
+ expect(printTree(tree)).toBe("empty");
64
+ showContent.value = true;
65
+ expect(printTree(tree)).toBe("content");
66
+ });
67
+ it("propagates empty state up through parent contexts", () => {
68
+ const OuterSlot = createContentSlot();
69
+ const showContent = ref(false);
70
+ const tree = renderTree([_$memo(() => OuterSlot.isEmpty && "outer-empty"), _$createComponent(OuterSlot, {
71
+ get children() {
72
+ return _$createComponent(Show, {
73
+ get when() {
74
+ return showContent.value;
75
+ },
76
+ children: "content"
77
+ });
78
+ }
79
+ })]);
80
+
81
+ // Outer should be empty initially.
82
+ expect(printTree(tree)).toBe("outer-empty");
83
+
84
+ // Show content — outer should become non-empty.
85
+ showContent.value = true;
86
+ expect(printTree(tree)).toBe("content");
87
+ });
88
+ });
89
+ //# sourceMappingURL=lazy-isempty.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ref","describe","expect","it","Show","createContentSlot","ensureIsEmpty","getContext","printTree","renderTree","ctx","Capture","_$createComponent","not","toBeNull","isEmpty","toBeUndefined","_lastEmpty","toBe","isEmptyRef","toBeDefined","emptyCtx","fullCtx","EmptyCapture","FullCapture","ContentSlot","showContent","tree","_$memo","children","when","value","OuterSlot"],"sources":["../../test/lazy-isempty.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reactive-union-set-disposers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-union-set-disposers.test.d.ts","sourceRoot":"","sources":["../../test/reactive-union-set-disposers.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import { reactive } from "@vue/reactivity";
2
+ import { describe, expect, it } from "vitest";
3
+ import { ReactiveUnionSet } from "../src/reactive-union-set.js";
4
+ import { effect } from "../src/reactivity.js";
5
+ import { flushJobs } from "../src/scheduler.js";
6
+ describe("ReactiveUnionSet: per-item disposers via addSubset", () => {
7
+ it("calls onDelete when item is removed from subset", () => {
8
+ const parentSet = new ReactiveUnionSet();
9
+ const subset = reactive(new Set());
10
+ const deleted = [];
11
+ parentSet.addSubset(subset, {
12
+ onDelete(value) {
13
+ deleted.push(value);
14
+ }
15
+ });
16
+ subset.add("a");
17
+ subset.add("b");
18
+ flushJobs();
19
+ expect(parentSet.has("a")).toBe(true);
20
+ expect(parentSet.has("b")).toBe(true);
21
+ subset.delete("a");
22
+ flushJobs();
23
+ expect(parentSet.has("a")).toBe(false);
24
+ expect(deleted).toContain("a");
25
+ });
26
+ it("calls onDelete for all items when subset is cleared", () => {
27
+ const parentSet = new ReactiveUnionSet();
28
+ const subset = reactive(new Set());
29
+ const deleted = [];
30
+ parentSet.addSubset(subset, {
31
+ onDelete(value) {
32
+ deleted.push(value);
33
+ }
34
+ });
35
+ subset.add("a");
36
+ subset.add("b");
37
+ subset.add("c");
38
+ flushJobs();
39
+ expect(parentSet.size).toBe(3);
40
+ subset.clear();
41
+ flushJobs();
42
+ expect(parentSet.size).toBe(0);
43
+ expect(deleted.sort()).toEqual(["a", "b", "c"]);
44
+ });
45
+ it("disposes root scopes created by onAdd when item is removed", () => {
46
+ const parentSet = new ReactiveUnionSet();
47
+ const subset = reactive(new Set());
48
+ let disposeCount = 0;
49
+
50
+ // Use the constructor-level onAdd so items are still added to the set,
51
+ // plus per-subset onAdd with root scope tracking.
52
+ parentSet.addSubset(subset, {
53
+ onAdd(value) {
54
+ // The onAdd in addSubset wraps in root() internally.
55
+ // Side-effects created here are cleaned up when the item is removed.
56
+ effect(() => {
57
+ void value; // track nothing real, just proving the effect exists
58
+ });
59
+ return value;
60
+ },
61
+ onDelete() {
62
+ disposeCount++;
63
+ }
64
+ });
65
+ subset.add("x");
66
+ flushJobs();
67
+
68
+ // Remove item — root scope (and its effects) should be disposed.
69
+ subset.delete("x");
70
+ flushJobs();
71
+ expect(disposeCount).toBe(1);
72
+ });
73
+ it("re-adding after delete triggers fresh onAdd", () => {
74
+ const parentSet = new ReactiveUnionSet();
75
+ const subset = reactive(new Set());
76
+ let addCount = 0;
77
+ const deleted = [];
78
+ parentSet.addSubset(subset, {
79
+ onAdd(value) {
80
+ addCount++;
81
+ return value;
82
+ },
83
+ onDelete(value) {
84
+ deleted.push(value);
85
+ }
86
+ });
87
+ subset.add("a");
88
+ flushJobs();
89
+ expect(addCount).toBe(1);
90
+ subset.delete("a");
91
+ flushJobs();
92
+ expect(deleted).toEqual(["a"]);
93
+ subset.add("a");
94
+ flushJobs();
95
+ expect(addCount).toBe(2);
96
+ });
97
+ });
98
+ //# sourceMappingURL=reactive-union-set-disposers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["reactive","describe","expect","it","ReactiveUnionSet","effect","flushJobs","parentSet","subset","Set","deleted","addSubset","onDelete","value","push","add","has","toBe","delete","toContain","size","clear","sort","toEqual","disposeCount","onAdd","addCount"],"sources":["../../test/reactive-union-set-disposers.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shallow-reactive.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shallow-reactive.test.d.ts","sourceRoot":"","sources":["../../../test/reactivity/shallow-reactive.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
2
+ import { getReactiveCreationLocation, shallowReactive } from "../../src/reactivity.js";
3
+ describe("shallowReactive creation location", () => {
4
+ let origDebug;
5
+ beforeEach(() => {
6
+ origDebug = process.env.ALLOY_DEBUG;
7
+ process.env.ALLOY_DEBUG = "1";
8
+ });
9
+ afterEach(() => {
10
+ if (origDebug === undefined) {
11
+ delete process.env.ALLOY_DEBUG;
12
+ } else {
13
+ process.env.ALLOY_DEBUG = origDebug;
14
+ }
15
+ });
16
+ it("stores creation location keyed by raw target when debug enabled", () => {
17
+ const raw = {
18
+ x: 1
19
+ };
20
+ shallowReactive(raw);
21
+ const location = getReactiveCreationLocation(raw);
22
+ // When ALLOY_DEBUG is set, captureSourceLocation should return something.
23
+ expect(location).toBeDefined();
24
+ });
25
+ it("does not store location when debug is disabled", () => {
26
+ delete process.env.ALLOY_DEBUG;
27
+ const raw = {
28
+ y: 2
29
+ };
30
+ shallowReactive(raw);
31
+ const location = getReactiveCreationLocation(raw);
32
+ expect(location).toBeUndefined();
33
+ });
34
+ it("location is keyed by raw target, not proxy", () => {
35
+ const raw = {
36
+ z: 3
37
+ };
38
+ const proxy = shallowReactive(raw);
39
+
40
+ // Proxy and raw are different objects.
41
+ expect(proxy).not.toBe(raw);
42
+
43
+ // Location should be on the raw target.
44
+ const location = getReactiveCreationLocation(raw);
45
+ expect(location).toBeDefined();
46
+
47
+ // The proxy itself should NOT have a location stored (WeakMap keyed by raw).
48
+ // Note: Vue may unwrap the proxy to raw internally, but our code explicitly
49
+ // stores on `target` (the raw object passed to shallowReactive).
50
+ });
51
+ });
52
+ //# sourceMappingURL=shallow-reactive.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["afterEach","beforeEach","describe","expect","it","getReactiveCreationLocation","shallowReactive","origDebug","process","env","ALLOY_DEBUG","undefined","raw","x","location","toBeDefined","y","toBeUndefined","z","proxy","not","toBe"],"sources":["../../../test/reactivity/shallow-reactive.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACpE,SACEC,2BAA2B,EAC3BC,eAAe,QACV,yBAAyB;AAEhCJ,QAAQ,CAAC,mCAAmC,EAAE,MAAM;EAClD,IAAIK,SAA6B;EAEjCN,UAAU,CAAC,MAAM;IACfM,SAAS,GAAGC,OAAO,CAACC,GAAG,CAACC,WAAW;IACnCF,OAAO,CAACC,GAAG,CAACC,WAAW,GAAG,GAAG;EAC/B,CAAC,CAAC;EAEFV,SAAS,CAAC,MAAM;IACd,IAAIO,SAAS,KAAKI,SAAS,EAAE;MAC3B,OAAOH,OAAO,CAACC,GAAG,CAACC,WAAW;IAChC,CAAC,MAAM;MACLF,OAAO,CAACC,GAAG,CAACC,WAAW,GAAGH,SAAS;IACrC;EACF,CAAC,CAAC;EAEFH,EAAE,CAAC,iEAAiE,EAAE,MAAM;IAC1E,MAAMQ,GAAG,GAAG;MAAEC,CAAC,EAAE;IAAE,CAAC;IACpBP,eAAe,CAACM,GAAG,CAAC;IAEpB,MAAME,QAAQ,GAAGT,2BAA2B,CAACO,GAAG,CAAC;IACjD;IACAT,MAAM,CAACW,QAAQ,CAAC,CAACC,WAAW,CAAC,CAAC;EAChC,CAAC,CAAC;EAEFX,EAAE,CAAC,gDAAgD,EAAE,MAAM;IACzD,OAAOI,OAAO,CAACC,GAAG,CAACC,WAAW;IAC9B,MAAME,GAAG,GAAG;MAAEI,CAAC,EAAE;IAAE,CAAC;IACpBV,eAAe,CAACM,GAAG,CAAC;IAEpB,MAAME,QAAQ,GAAGT,2BAA2B,CAACO,GAAG,CAAC;IACjDT,MAAM,CAACW,QAAQ,CAAC,CAACG,aAAa,CAAC,CAAC;EAClC,CAAC,CAAC;EAEFb,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,MAAMQ,GAAG,GAAG;MAAEM,CAAC,EAAE;IAAE,CAAC;IACpB,MAAMC,KAAK,GAAGb,eAAe,CAACM,GAAG,CAAC;;IAElC;IACAT,MAAM,CAACgB,KAAK,CAAC,CAACC,GAAG,CAACC,IAAI,CAACT,GAAG,CAAC;;IAE3B;IACA,MAAME,QAAQ,GAAGT,2BAA2B,CAACO,GAAG,CAAC;IACjDT,MAAM,CAACW,QAAQ,CAAC,CAACC,WAAW,CAAC,CAAC;;IAE9B;IACA;IACA;EACF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scheduler-extended.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler-extended.test.d.ts","sourceRoot":"","sources":["../../test/scheduler-extended.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import { ref, stop, effect as vueEffect } from "@vue/reactivity";
2
+ import { describe, expect, it } from "vitest";
3
+ import { flushJobs, flushJobsAsync, queueJob, scheduler } from "../src/scheduler.js";
4
+ describe("scheduler: isJobActive additional coverage", () => {
5
+ it("does not run stopped effects in async flush", async () => {
6
+ const source = ref(0);
7
+ let runCount = 0;
8
+ const runner = vueEffect(() => {
9
+ runCount++;
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
11
+ source.value;
12
+ }, {
13
+ scheduler: scheduler()
14
+ });
15
+ expect(runCount).toBe(1);
16
+ source.value = 1;
17
+ stop(runner);
18
+ await flushJobsAsync();
19
+ expect(runCount).toBe(1);
20
+ });
21
+ it("does not run stopped immediate effects", () => {
22
+ const source = ref(0);
23
+ let runCount = 0;
24
+ const runner = vueEffect(() => {
25
+ runCount++;
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
27
+ source.value;
28
+ }, {
29
+ scheduler: scheduler(true)
30
+ });
31
+ expect(runCount).toBe(1);
32
+ source.value = 1;
33
+ stop(runner);
34
+ flushJobs();
35
+ expect(runCount).toBe(1);
36
+ });
37
+ it("runs effect in first flush but not after stop", () => {
38
+ const source = ref(0);
39
+ let runCount = 0;
40
+ const runner = vueEffect(() => {
41
+ runCount++;
42
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
43
+ source.value;
44
+ }, {
45
+ scheduler: scheduler()
46
+ });
47
+ expect(runCount).toBe(1);
48
+
49
+ // First flush: effect is active, should run.
50
+ source.value = 1;
51
+ flushJobs();
52
+ expect(runCount).toBe(2);
53
+
54
+ // Stop, then trigger again — should not run.
55
+ stop(runner);
56
+ source.value = 2;
57
+ flushJobs();
58
+ expect(runCount).toBe(2);
59
+ });
60
+ it("skips multiple stopped effects in the same flush", () => {
61
+ const source = ref(0);
62
+ let runCountA = 0;
63
+ let runCountB = 0;
64
+ const runnerA = vueEffect(() => {
65
+ runCountA++;
66
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
67
+ source.value;
68
+ }, {
69
+ scheduler: scheduler()
70
+ });
71
+ const runnerB = vueEffect(() => {
72
+ runCountB++;
73
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
74
+ source.value;
75
+ }, {
76
+ scheduler: scheduler()
77
+ });
78
+ expect(runCountA).toBe(1);
79
+ expect(runCountB).toBe(1);
80
+ source.value = 1;
81
+ stop(runnerA);
82
+ stop(runnerB);
83
+ flushJobs();
84
+ expect(runCountA).toBe(1);
85
+ expect(runCountB).toBe(1);
86
+ });
87
+ it("handles plain function jobs that lack flags", () => {
88
+ let ran = false;
89
+ queueJob(() => {
90
+ ran = true;
91
+ });
92
+ flushJobs();
93
+ expect(ran).toBe(true);
94
+ });
95
+ });
96
+ //# sourceMappingURL=scheduler-extended.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ref","stop","effect","vueEffect","describe","expect","it","flushJobs","flushJobsAsync","queueJob","scheduler","source","runCount","runner","value","toBe","runCountA","runCountB","runnerA","runnerB","ran"],"sources":["../../test/scheduler-extended.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scheduler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.test.d.ts","sourceRoot":"","sources":["../../test/scheduler.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { ref, stop, effect as vueEffect } from "@vue/reactivity";
2
+ import { describe, expect, it } from "vitest";
3
+ import { effect } from "../src/reactivity.js";
4
+ import { flushJobs, scheduler } from "../src/scheduler.js";
5
+ describe("scheduler", () => {
6
+ it("does not run stopped effects from the queue", () => {
7
+ const source = ref(0);
8
+ let runCount = 0;
9
+
10
+ // Create an effect that tracks source via alloy's scheduler.
11
+ const runner = vueEffect(() => {
12
+ runCount++;
13
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
14
+ source.value;
15
+ }, {
16
+ scheduler: scheduler()
17
+ });
18
+ expect(runCount).toBe(1);
19
+
20
+ // Trigger the effect — it gets queued in the scheduler.
21
+ source.value = 1;
22
+ // Stop the effect before flushing.
23
+ stop(runner);
24
+ flushJobs();
25
+
26
+ // The stopped effect must not have run.
27
+ expect(runCount).toBe(1);
28
+ });
29
+ it("runs active effects normally", () => {
30
+ const source = ref(0);
31
+ let runCount = 0;
32
+ effect(() => {
33
+ runCount++;
34
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
35
+ source.value;
36
+ });
37
+ expect(runCount).toBe(1);
38
+ source.value = 1;
39
+ flushJobs();
40
+ expect(runCount).toBe(2);
41
+ source.value = 2;
42
+ flushJobs();
43
+ expect(runCount).toBe(3);
44
+ });
45
+ });
46
+ //# sourceMappingURL=scheduler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ref","stop","effect","vueEffect","describe","expect","it","flushJobs","scheduler","source","runCount","runner","value","toBe"],"sources":["../../test/scheduler.test.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,EAAEC,IAAI,EAAEC,MAAM,IAAIC,SAAS,QAAQ,iBAAiB;AAChE,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASJ,MAAM,QAAQ,sBAAsB;AAC7C,SAASK,SAAS,EAAEC,SAAS,QAAQ,qBAAqB;AAE1DJ,QAAQ,CAAC,WAAW,EAAE,MAAM;EAC1BE,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtD,MAAMG,MAAM,GAAGT,GAAG,CAAC,CAAC,CAAC;IACrB,IAAIU,QAAQ,GAAG,CAAC;;IAEhB;IACA,MAAMC,MAAM,GAAGR,SAAS,CACtB,MAAM;MACJO,QAAQ,EAAE;MACV;MACAD,MAAM,CAACG,KAAK;IACd,CAAC,EACD;MAAEJ,SAAS,EAAEA,SAAS,CAAC;IAAE,CAC3B,CAAC;IACDH,MAAM,CAACK,QAAQ,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;;IAExB;IACAJ,MAAM,CAACG,KAAK,GAAG,CAAC;IAChB;IACAX,IAAI,CAACU,MAAM,CAAC;IACZJ,SAAS,CAAC,CAAC;;IAEX;IACAF,MAAM,CAACK,QAAQ,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;EAC1B,CAAC,CAAC;EAEFP,EAAE,CAAC,8BAA8B,EAAE,MAAM;IACvC,MAAMG,MAAM,GAAGT,GAAG,CAAC,CAAC,CAAC;IACrB,IAAIU,QAAQ,GAAG,CAAC;IAEhBR,MAAM,CAAC,MAAM;MACXQ,QAAQ,EAAE;MACV;MACAD,MAAM,CAACG,KAAK;IACd,CAAC,CAAC;IAEFP,MAAM,CAACK,QAAQ,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;IACxBJ,MAAM,CAACG,KAAK,GAAG,CAAC;IAChBL,SAAS,CAAC,CAAC;IACXF,MAAM,CAACK,QAAQ,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;IACxBJ,MAAM,CAACG,KAAK,GAAG,CAAC;IAChBL,SAAS,CAAC,CAAC;IACXF,MAAM,CAACK,QAAQ,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;EAC1B,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}