signalium 1.2.2 → 2.0.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/CHANGELOG.md +28 -0
- package/{build/transform.js → config.js} +1 -5
- package/{build/react.js → debug.js} +1 -5
- package/dist/cjs/config.d.ts +1 -21
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +3 -36
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/debug.d.ts +1 -1
- package/dist/cjs/debug.d.ts.map +1 -1
- package/dist/cjs/debug.js +1 -1
- package/dist/cjs/debug.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -6
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -23
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internals/async.d.ts +24 -19
- package/dist/cjs/internals/async.d.ts.map +1 -1
- package/dist/cjs/internals/async.js +264 -137
- package/dist/cjs/internals/async.js.map +1 -1
- package/dist/cjs/internals/callback.d.ts +13 -0
- package/dist/cjs/internals/callback.d.ts.map +1 -0
- package/dist/cjs/internals/callback.js +73 -0
- package/dist/cjs/internals/callback.js.map +1 -0
- package/dist/cjs/internals/config.d.ts +7 -0
- package/dist/cjs/internals/config.d.ts.map +1 -0
- package/dist/cjs/internals/config.js +17 -0
- package/dist/cjs/internals/config.js.map +1 -0
- package/dist/cjs/internals/consumer.d.ts +3 -3
- package/dist/cjs/internals/consumer.d.ts.map +1 -1
- package/dist/cjs/internals/consumer.js.map +1 -1
- package/dist/cjs/internals/contexts.d.ts +15 -14
- package/dist/cjs/internals/contexts.d.ts.map +1 -1
- package/dist/cjs/internals/contexts.js +52 -52
- package/dist/cjs/internals/contexts.js.map +1 -1
- package/dist/cjs/internals/core-api.d.ts +15 -0
- package/dist/cjs/internals/core-api.d.ts.map +1 -0
- package/dist/cjs/internals/core-api.js +83 -0
- package/dist/cjs/internals/core-api.js.map +1 -0
- package/dist/cjs/internals/dirty.d.ts +3 -3
- package/dist/cjs/internals/dirty.d.ts.map +1 -1
- package/dist/cjs/internals/dirty.js +13 -13
- package/dist/cjs/internals/dirty.js.map +1 -1
- package/dist/cjs/internals/edge.d.ts +5 -5
- package/dist/cjs/internals/edge.d.ts.map +1 -1
- package/dist/cjs/internals/edge.js.map +1 -1
- package/dist/cjs/internals/generators.d.ts +5 -0
- package/dist/cjs/internals/generators.d.ts.map +1 -0
- package/dist/cjs/internals/generators.js +83 -0
- package/dist/cjs/internals/generators.js.map +1 -0
- package/dist/cjs/internals/get.d.ts +5 -8
- package/dist/cjs/internals/get.d.ts.map +1 -1
- package/dist/cjs/internals/get.js +48 -107
- package/dist/cjs/internals/get.js.map +1 -1
- package/dist/cjs/internals/reactive.d.ts +77 -0
- package/dist/cjs/internals/reactive.d.ts.map +1 -0
- package/dist/cjs/internals/{derived.js → reactive.js} +45 -33
- package/dist/cjs/internals/reactive.js.map +1 -0
- package/dist/cjs/internals/scheduling.d.ts +7 -7
- package/dist/cjs/internals/scheduling.d.ts.map +1 -1
- package/dist/cjs/internals/scheduling.js +9 -9
- package/dist/cjs/internals/scheduling.js.map +1 -1
- package/dist/cjs/internals/signal.d.ts +20 -0
- package/dist/cjs/internals/signal.d.ts.map +1 -0
- package/dist/cjs/internals/{state.js → signal.js} +31 -27
- package/dist/cjs/internals/signal.js.map +1 -0
- package/dist/{esm → cjs/internals}/trace.d.ts +1 -1
- package/dist/cjs/internals/trace.d.ts.map +1 -0
- package/dist/cjs/{trace.js → internals/trace.js} +1 -1
- package/dist/cjs/internals/trace.js.map +1 -0
- package/dist/cjs/internals/utils/equals.d.ts +4 -4
- package/dist/cjs/internals/utils/equals.d.ts.map +1 -1
- package/dist/cjs/internals/utils/equals.js.map +1 -1
- package/dist/cjs/internals/utils/type-utils.d.ts +0 -2
- package/dist/cjs/internals/utils/type-utils.d.ts.map +1 -1
- package/dist/cjs/internals/utils/type-utils.js +0 -5
- package/dist/cjs/internals/utils/type-utils.js.map +1 -1
- package/dist/cjs/internals/watch.d.ts +4 -0
- package/dist/cjs/internals/watch.d.ts.map +1 -0
- package/dist/cjs/internals/{connect.js → watch.js} +7 -7
- package/dist/cjs/internals/watch.js.map +1 -0
- package/dist/cjs/internals/weakref.d.ts.map +1 -0
- package/dist/cjs/internals/weakref.js.map +1 -0
- package/dist/cjs/react/component.d.ts +2 -0
- package/dist/cjs/react/component.d.ts.map +1 -0
- package/dist/cjs/react/component.js +40 -0
- package/dist/cjs/react/component.js.map +1 -0
- package/dist/cjs/react/context.d.ts +2 -1
- package/dist/cjs/react/context.d.ts.map +1 -1
- package/dist/cjs/react/context.js +10 -5
- package/dist/cjs/react/context.js.map +1 -1
- package/dist/cjs/react/index.d.ts +4 -4
- package/dist/cjs/react/index.d.ts.map +1 -1
- package/dist/cjs/react/index.js +11 -8
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/provider.d.ts.map +1 -1
- package/dist/cjs/react/provider.js +1 -1
- package/dist/cjs/react/provider.js.map +1 -1
- package/dist/cjs/react/rendering.d.ts +0 -6
- package/dist/cjs/react/rendering.d.ts.map +1 -1
- package/dist/cjs/react/rendering.js +1 -19
- package/dist/cjs/react/rendering.js.map +1 -1
- package/dist/cjs/react/use-reactive.d.ts +7 -0
- package/dist/cjs/react/use-reactive.d.ts.map +1 -0
- package/dist/cjs/react/use-reactive.js +67 -0
- package/dist/cjs/react/use-reactive.js.map +1 -0
- package/dist/cjs/react/use-signal.d.ts +3 -0
- package/dist/cjs/react/use-signal.d.ts.map +1 -0
- package/dist/cjs/react/{state.js → use-signal.js} +5 -5
- package/dist/cjs/react/use-signal.js.map +1 -0
- package/dist/cjs/{transform.d.ts → transform/async.d.ts} +1 -1
- package/dist/cjs/transform/async.d.ts.map +1 -0
- package/dist/cjs/{transform.js → transform/async.js} +22 -9
- package/dist/cjs/transform/async.js.map +1 -0
- package/dist/cjs/transform/callback.d.ts +6 -0
- package/dist/cjs/transform/callback.d.ts.map +1 -0
- package/dist/cjs/transform/callback.js +259 -0
- package/dist/cjs/transform/callback.js.map +1 -0
- package/dist/cjs/transform/index.d.ts +5 -0
- package/dist/cjs/transform/index.d.ts.map +1 -0
- package/dist/cjs/transform/index.js +12 -0
- package/dist/cjs/transform/index.js.map +1 -0
- package/dist/cjs/transform/preset.d.ts +7 -0
- package/dist/cjs/transform/preset.d.ts.map +1 -0
- package/dist/cjs/transform/preset.js +20 -0
- package/dist/cjs/transform/preset.js.map +1 -0
- package/dist/cjs/transform/promise.d.ts +6 -0
- package/dist/cjs/transform/promise.d.ts.map +1 -0
- package/dist/cjs/transform/promise.js +129 -0
- package/dist/cjs/transform/promise.js.map +1 -0
- package/dist/cjs/types.d.ts +44 -63
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils.d.ts +2 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +7 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/config.d.ts +1 -21
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +1 -29
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/debug.d.ts +1 -1
- package/dist/esm/debug.d.ts.map +1 -1
- package/dist/esm/debug.js +1 -1
- package/dist/esm/debug.js.map +1 -1
- package/dist/esm/index.d.ts +5 -6
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internals/async.d.ts +24 -19
- package/dist/esm/internals/async.d.ts.map +1 -1
- package/dist/esm/internals/async.js +253 -128
- package/dist/esm/internals/async.js.map +1 -1
- package/dist/esm/internals/callback.d.ts +13 -0
- package/dist/esm/internals/callback.d.ts.map +1 -0
- package/dist/esm/internals/callback.js +67 -0
- package/dist/esm/internals/callback.js.map +1 -0
- package/dist/esm/internals/config.d.ts +7 -0
- package/dist/esm/internals/config.d.ts.map +1 -0
- package/dist/esm/internals/config.js +11 -0
- package/dist/esm/internals/config.js.map +1 -0
- package/dist/esm/internals/consumer.d.ts +3 -3
- package/dist/esm/internals/consumer.d.ts.map +1 -1
- package/dist/esm/internals/consumer.js.map +1 -1
- package/dist/esm/internals/contexts.d.ts +15 -14
- package/dist/esm/internals/contexts.d.ts.map +1 -1
- package/dist/esm/internals/contexts.js +46 -46
- package/dist/esm/internals/contexts.js.map +1 -1
- package/dist/esm/internals/core-api.d.ts +15 -0
- package/dist/esm/internals/core-api.d.ts.map +1 -0
- package/dist/esm/internals/core-api.js +74 -0
- package/dist/esm/internals/core-api.js.map +1 -0
- package/dist/esm/internals/dirty.d.ts +3 -3
- package/dist/esm/internals/dirty.d.ts.map +1 -1
- package/dist/esm/internals/dirty.js +12 -12
- package/dist/esm/internals/dirty.js.map +1 -1
- package/dist/esm/internals/edge.d.ts +5 -5
- package/dist/esm/internals/edge.d.ts.map +1 -1
- package/dist/esm/internals/edge.js.map +1 -1
- package/dist/esm/internals/generators.d.ts +5 -0
- package/dist/esm/internals/generators.d.ts.map +1 -0
- package/dist/esm/internals/generators.js +79 -0
- package/dist/esm/internals/generators.js.map +1 -0
- package/dist/esm/internals/get.d.ts +5 -8
- package/dist/esm/internals/get.d.ts.map +1 -1
- package/dist/esm/internals/get.js +43 -100
- package/dist/esm/internals/get.js.map +1 -1
- package/dist/esm/internals/reactive.d.ts +77 -0
- package/dist/esm/internals/reactive.d.ts.map +1 -0
- package/dist/esm/internals/{derived.js → reactive.js} +41 -29
- package/dist/esm/internals/reactive.js.map +1 -0
- package/dist/esm/internals/scheduling.d.ts +7 -7
- package/dist/esm/internals/scheduling.d.ts.map +1 -1
- package/dist/esm/internals/scheduling.js +6 -6
- package/dist/esm/internals/scheduling.js.map +1 -1
- package/dist/esm/internals/signal.d.ts +20 -0
- package/dist/esm/internals/signal.d.ts.map +1 -0
- package/dist/esm/internals/{state.js → signal.js} +25 -22
- package/dist/esm/internals/signal.js.map +1 -0
- package/dist/{cjs → esm/internals}/trace.d.ts +1 -1
- package/dist/esm/internals/trace.d.ts.map +1 -0
- package/dist/esm/{trace.js → internals/trace.js} +1 -1
- package/dist/esm/internals/trace.js.map +1 -0
- package/dist/esm/internals/utils/equals.d.ts +4 -4
- package/dist/esm/internals/utils/equals.d.ts.map +1 -1
- package/dist/esm/internals/utils/equals.js.map +1 -1
- package/dist/esm/internals/utils/type-utils.d.ts +0 -2
- package/dist/esm/internals/utils/type-utils.d.ts.map +1 -1
- package/dist/esm/internals/utils/type-utils.js +0 -4
- package/dist/esm/internals/utils/type-utils.js.map +1 -1
- package/dist/esm/internals/watch.d.ts +4 -0
- package/dist/esm/internals/watch.d.ts.map +1 -0
- package/dist/esm/internals/{connect.js → watch.js} +7 -7
- package/dist/esm/internals/watch.js.map +1 -0
- package/dist/esm/internals/weakref.d.ts.map +1 -0
- package/dist/esm/internals/weakref.js.map +1 -0
- package/dist/esm/react/component.d.ts +2 -0
- package/dist/esm/react/component.d.ts.map +1 -0
- package/dist/esm/react/component.js +37 -0
- package/dist/esm/react/component.js.map +1 -0
- package/dist/esm/react/context.d.ts +2 -1
- package/dist/esm/react/context.d.ts.map +1 -1
- package/dist/esm/react/context.js +10 -6
- package/dist/esm/react/context.js.map +1 -1
- package/dist/esm/react/index.d.ts +4 -4
- package/dist/esm/react/index.d.ts.map +1 -1
- package/dist/esm/react/index.js +4 -4
- package/dist/esm/react/index.js.map +1 -1
- package/dist/esm/react/provider.d.ts.map +1 -1
- package/dist/esm/react/provider.js +2 -2
- package/dist/esm/react/provider.js.map +1 -1
- package/dist/esm/react/rendering.d.ts +0 -6
- package/dist/esm/react/rendering.d.ts.map +1 -1
- package/dist/esm/react/rendering.js +1 -17
- package/dist/esm/react/rendering.js.map +1 -1
- package/dist/esm/react/use-reactive.d.ts +7 -0
- package/dist/esm/react/use-reactive.d.ts.map +1 -0
- package/dist/esm/react/use-reactive.js +64 -0
- package/dist/esm/react/use-reactive.js.map +1 -0
- package/dist/esm/react/use-signal.d.ts +3 -0
- package/dist/esm/react/use-signal.d.ts.map +1 -0
- package/dist/esm/react/use-signal.js +10 -0
- package/dist/esm/react/use-signal.js.map +1 -0
- package/dist/esm/{transform.d.ts → transform/async.d.ts} +1 -1
- package/dist/esm/transform/async.d.ts.map +1 -0
- package/dist/esm/{transform.js → transform/async.js} +22 -9
- package/dist/esm/transform/async.js.map +1 -0
- package/dist/esm/transform/callback.d.ts +6 -0
- package/dist/esm/transform/callback.d.ts.map +1 -0
- package/dist/esm/transform/callback.js +256 -0
- package/dist/esm/transform/callback.js.map +1 -0
- package/dist/esm/transform/index.d.ts +5 -0
- package/dist/esm/transform/index.d.ts.map +1 -0
- package/dist/esm/transform/index.js +5 -0
- package/dist/esm/transform/index.js.map +1 -0
- package/dist/esm/transform/preset.d.ts +7 -0
- package/dist/esm/transform/preset.d.ts.map +1 -0
- package/dist/esm/transform/preset.js +17 -0
- package/dist/esm/transform/preset.js.map +1 -0
- package/dist/esm/transform/promise.d.ts +6 -0
- package/dist/esm/transform/promise.d.ts.map +1 -0
- package/dist/esm/transform/promise.js +126 -0
- package/dist/esm/transform/promise.js.map +1 -0
- package/dist/esm/types.d.ts +44 -63
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils.d.ts +2 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +2 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +56 -58
- package/react.js +0 -4
- package/transform.js +1 -5
- package/utils.js +15 -0
- package/.turbo/turbo-build.log +0 -12
- package/dist/cjs/hooks.d.ts +0 -16
- package/dist/cjs/hooks.d.ts.map +0 -1
- package/dist/cjs/hooks.js +0 -44
- package/dist/cjs/hooks.js.map +0 -1
- package/dist/cjs/internals/connect.d.ts +0 -4
- package/dist/cjs/internals/connect.d.ts.map +0 -1
- package/dist/cjs/internals/connect.js.map +0 -1
- package/dist/cjs/internals/derived.d.ts +0 -76
- package/dist/cjs/internals/derived.d.ts.map +0 -1
- package/dist/cjs/internals/derived.js.map +0 -1
- package/dist/cjs/internals/state.d.ts +0 -18
- package/dist/cjs/internals/state.d.ts.map +0 -1
- package/dist/cjs/internals/state.js.map +0 -1
- package/dist/cjs/react/setup.d.ts +0 -2
- package/dist/cjs/react/setup.d.ts.map +0 -1
- package/dist/cjs/react/setup.js +0 -14
- package/dist/cjs/react/setup.js.map +0 -1
- package/dist/cjs/react/signal-value.d.ts +0 -6
- package/dist/cjs/react/signal-value.d.ts.map +0 -1
- package/dist/cjs/react/signal-value.js +0 -37
- package/dist/cjs/react/signal-value.js.map +0 -1
- package/dist/cjs/react/state.d.ts +0 -3
- package/dist/cjs/react/state.d.ts.map +0 -1
- package/dist/cjs/react/state.js.map +0 -1
- package/dist/cjs/trace.d.ts.map +0 -1
- package/dist/cjs/trace.js.map +0 -1
- package/dist/cjs/transform.d.ts.map +0 -1
- package/dist/cjs/transform.js.map +0 -1
- package/dist/cjs/weakref.d.ts.map +0 -1
- package/dist/cjs/weakref.js.map +0 -1
- package/dist/esm/hooks.d.ts +0 -16
- package/dist/esm/hooks.d.ts.map +0 -1
- package/dist/esm/hooks.js +0 -37
- package/dist/esm/hooks.js.map +0 -1
- package/dist/esm/internals/connect.d.ts +0 -4
- package/dist/esm/internals/connect.d.ts.map +0 -1
- package/dist/esm/internals/connect.js.map +0 -1
- package/dist/esm/internals/derived.d.ts +0 -76
- package/dist/esm/internals/derived.d.ts.map +0 -1
- package/dist/esm/internals/derived.js.map +0 -1
- package/dist/esm/internals/state.d.ts +0 -18
- package/dist/esm/internals/state.d.ts.map +0 -1
- package/dist/esm/internals/state.js.map +0 -1
- package/dist/esm/react/setup.d.ts +0 -2
- package/dist/esm/react/setup.d.ts.map +0 -1
- package/dist/esm/react/setup.js +0 -11
- package/dist/esm/react/setup.js.map +0 -1
- package/dist/esm/react/signal-value.d.ts +0 -6
- package/dist/esm/react/signal-value.d.ts.map +0 -1
- package/dist/esm/react/signal-value.js +0 -33
- package/dist/esm/react/signal-value.js.map +0 -1
- package/dist/esm/react/state.d.ts +0 -3
- package/dist/esm/react/state.d.ts.map +0 -1
- package/dist/esm/react/state.js +0 -10
- package/dist/esm/react/state.js.map +0 -1
- package/dist/esm/trace.d.ts.map +0 -1
- package/dist/esm/trace.js.map +0 -1
- package/dist/esm/transform.d.ts.map +0 -1
- package/dist/esm/transform.js.map +0 -1
- package/dist/esm/weakref.d.ts.map +0 -1
- package/dist/esm/weakref.js.map +0 -1
- package/src/__tests__/__snapshots__/context.test.ts.snap +0 -2101
- package/src/__tests__/__snapshots__/nesting.test.ts.snap +0 -16201
- package/src/__tests__/__snapshots__/params-and-state.test.ts.snap +0 -1879
- package/src/__tests__/async-task.test.ts +0 -327
- package/src/__tests__/context.test.ts +0 -619
- package/src/__tests__/gc.test.ts +0 -256
- package/src/__tests__/nesting.test.ts +0 -298
- package/src/__tests__/params-and-state.test.ts +0 -230
- package/src/__tests__/reactive-async.test.ts +0 -548
- package/src/__tests__/reactive-sync.test.ts +0 -130
- package/src/__tests__/subscription.test.ts +0 -510
- package/src/__tests__/utils/async.ts +0 -6
- package/src/__tests__/utils/instrumented-hooks.ts +0 -410
- package/src/__tests__/utils/permute.ts +0 -85
- package/src/config.ts +0 -54
- package/src/debug.ts +0 -14
- package/src/hooks.ts +0 -82
- package/src/index.ts +0 -21
- package/src/internals/async.ts +0 -563
- package/src/internals/connect.ts +0 -49
- package/src/internals/consumer.ts +0 -13
- package/src/internals/contexts.ts +0 -177
- package/src/internals/derived.ts +0 -217
- package/src/internals/dirty.ts +0 -91
- package/src/internals/edge.ts +0 -109
- package/src/internals/get.ts +0 -298
- package/src/internals/scheduling.ts +0 -160
- package/src/internals/state.ts +0 -111
- package/src/internals/utils/debug-name.ts +0 -14
- package/src/internals/utils/equals.ts +0 -12
- package/src/internals/utils/hash.ts +0 -221
- package/src/internals/utils/stringify.ts +0 -57
- package/src/internals/utils/type-utils.ts +0 -19
- package/src/react/__tests__/async.test.tsx +0 -704
- package/src/react/__tests__/basic.test.tsx +0 -95
- package/src/react/__tests__/contexts.test.tsx +0 -181
- package/src/react/__tests__/subscriptions.test.tsx +0 -49
- package/src/react/__tests__/utils.tsx +0 -40
- package/src/react/context.ts +0 -14
- package/src/react/index.ts +0 -6
- package/src/react/provider.tsx +0 -18
- package/src/react/rendering.ts +0 -43
- package/src/react/setup.ts +0 -11
- package/src/react/signal-value.ts +0 -50
- package/src/react/state.ts +0 -13
- package/src/trace.ts +0 -454
- package/src/transform.ts +0 -113
- package/src/types.ts +0 -115
- package/src/weakref.ts +0 -9
- package/tsconfig.json +0 -13
- package/vitest.workspace.ts +0 -61
- /package/dist/cjs/{weakref.d.ts → internals/weakref.d.ts} +0 -0
- /package/dist/cjs/{weakref.js → internals/weakref.js} +0 -0
- /package/dist/esm/{weakref.d.ts → internals/weakref.d.ts} +0 -0
- /package/dist/esm/{weakref.js → internals/weakref.js} +0 -0
@@ -1,619 +0,0 @@
|
|
1
|
-
import { describe, expect, test } from 'vitest';
|
2
|
-
import { createContext, useContext, withContexts, state, setRootContexts } from '../index.js';
|
3
|
-
import { permute } from './utils/permute.js';
|
4
|
-
import { nextTick } from './utils/async.js';
|
5
|
-
import { reactive } from './utils/instrumented-hooks.js';
|
6
|
-
|
7
|
-
describe('contexts', () => {
|
8
|
-
test('throws when useContext is used outside of a signal', () => {
|
9
|
-
expect(() => {
|
10
|
-
useContext(createContext('test'));
|
11
|
-
}).toThrow('useContext must be used within a signal hook');
|
12
|
-
});
|
13
|
-
|
14
|
-
test('setRootContexts sets contexts at the root level', () => {
|
15
|
-
const value = state('Hello');
|
16
|
-
const context = createContext(value);
|
17
|
-
const override = state('Hey');
|
18
|
-
|
19
|
-
// Create a reactive function that uses the context
|
20
|
-
const derived = reactive(() => `${useContext(context).get()}, World`);
|
21
|
-
|
22
|
-
// Initially should use default value
|
23
|
-
expect(derived()).toBe('Hello, World');
|
24
|
-
|
25
|
-
// Set root contexts
|
26
|
-
setRootContexts([[context, override]]);
|
27
|
-
|
28
|
-
// Should now use the override value
|
29
|
-
expect(derived()).toBe('Hey, World');
|
30
|
-
|
31
|
-
// Changes to override should be reflected
|
32
|
-
override.set('Hi');
|
33
|
-
expect(derived()).toBe('Hi, World');
|
34
|
-
});
|
35
|
-
|
36
|
-
test('setRootContexts with multiple contexts', () => {
|
37
|
-
const value1 = state('Hello');
|
38
|
-
const value2 = state('World');
|
39
|
-
const context1 = createContext(value1);
|
40
|
-
const context2 = createContext(value2);
|
41
|
-
const override1 = state('Hey');
|
42
|
-
const override2 = state('There');
|
43
|
-
|
44
|
-
const derived = reactive(() => `${useContext(context1).get()}, ${useContext(context2).get()}`);
|
45
|
-
|
46
|
-
// Initially should use default values
|
47
|
-
expect(derived()).toBe('Hello, World');
|
48
|
-
|
49
|
-
// Set multiple root contexts
|
50
|
-
setRootContexts([
|
51
|
-
[context1, override1],
|
52
|
-
[context2, override2],
|
53
|
-
]);
|
54
|
-
|
55
|
-
expect(derived()).toBe('Hey, There');
|
56
|
-
|
57
|
-
// Changes to overrides should be reflected
|
58
|
-
override1.set('Hi');
|
59
|
-
override2.set('Everyone');
|
60
|
-
expect(derived()).toBe('Hi, Everyone');
|
61
|
-
|
62
|
-
// Changes to original values should not affect the result
|
63
|
-
value1.set('Bye');
|
64
|
-
value2.set('Earth');
|
65
|
-
expect(derived()).toBe('Hi, Everyone');
|
66
|
-
});
|
67
|
-
|
68
|
-
test('withContexts inherits from root scope', () => {
|
69
|
-
const defaultValue1 = state('default1');
|
70
|
-
const defaultValue2 = state('default2');
|
71
|
-
const ctx1 = createContext(defaultValue1);
|
72
|
-
const ctx2 = createContext(defaultValue2);
|
73
|
-
const rootOverride1 = state('root1');
|
74
|
-
const rootOverride2 = state('root2');
|
75
|
-
|
76
|
-
// Set root contexts
|
77
|
-
setRootContexts([
|
78
|
-
[ctx1, rootOverride1],
|
79
|
-
[ctx2, rootOverride2],
|
80
|
-
]);
|
81
|
-
|
82
|
-
// Create a reactive function that uses both contexts
|
83
|
-
const derived = reactive(() => `${useContext(ctx1).get()}-${useContext(ctx2).get()}`);
|
84
|
-
|
85
|
-
// Should inherit from root scope when no local overrides
|
86
|
-
const result1 = withContexts([], () => derived());
|
87
|
-
expect(result1).toBe('root1-root2');
|
88
|
-
|
89
|
-
// Should inherit from root scope for unoverridden contexts
|
90
|
-
const localOverride1 = state('local1');
|
91
|
-
const result2 = withContexts([[ctx1, localOverride1]], () => derived());
|
92
|
-
expect(result2).toBe('local1-root2');
|
93
|
-
|
94
|
-
// Should use local overrides when provided
|
95
|
-
const localOverride2 = state('local2');
|
96
|
-
const result3 = withContexts(
|
97
|
-
[
|
98
|
-
[ctx1, localOverride1],
|
99
|
-
[ctx2, localOverride2],
|
100
|
-
],
|
101
|
-
() => derived(),
|
102
|
-
);
|
103
|
-
expect(result3).toBe('local1-local2');
|
104
|
-
|
105
|
-
// Changes to root contexts should be reflected in inherited contexts
|
106
|
-
rootOverride1.set('updated-root1');
|
107
|
-
rootOverride2.set('updated-root2');
|
108
|
-
|
109
|
-
const result4 = withContexts([], () => derived());
|
110
|
-
expect(result4).toBe('updated-root1-updated-root2');
|
111
|
-
|
112
|
-
const result5 = withContexts([[ctx1, localOverride1]], () => derived());
|
113
|
-
expect(result5).toBe('local1-updated-root2');
|
114
|
-
});
|
115
|
-
|
116
|
-
test('async computed maintains context ownership across await boundaries', async () => {
|
117
|
-
const ctx = createContext('default');
|
118
|
-
|
119
|
-
const inner = reactive(async () => {
|
120
|
-
await Promise.resolve();
|
121
|
-
return 'inner-value';
|
122
|
-
});
|
123
|
-
|
124
|
-
const outer = reactive(async () => {
|
125
|
-
const result = await inner();
|
126
|
-
|
127
|
-
// Use context after awaiting inner result
|
128
|
-
const contextValue = useContext(ctx);
|
129
|
-
return result + '-' + contextValue;
|
130
|
-
});
|
131
|
-
|
132
|
-
// Test in parent scope
|
133
|
-
expect(outer).toHaveValueAndCounts(undefined, { compute: 1 });
|
134
|
-
|
135
|
-
// Wait for async computation to complete
|
136
|
-
await nextTick();
|
137
|
-
await nextTick();
|
138
|
-
expect(outer).toHaveValueAndCounts('inner-value-default', { compute: 1 });
|
139
|
-
|
140
|
-
// Test in child scope
|
141
|
-
expect(outer.withContexts([ctx, 'child'])).toHaveValueAndCounts(undefined, { compute: 1 });
|
142
|
-
|
143
|
-
// Verify parent scope maintains separate computed
|
144
|
-
await nextTick();
|
145
|
-
await nextTick();
|
146
|
-
|
147
|
-
expect(outer.withContexts([ctx, 'child'])).toHaveValueAndCounts('inner-value-child', { compute: 1 });
|
148
|
-
expect(outer).toHaveValueAndCounts('inner-value-default', { compute: 1 });
|
149
|
-
});
|
150
|
-
|
151
|
-
test('async task maintains context ownership across await boundaries', async () => {
|
152
|
-
const ctx = createContext('default');
|
153
|
-
|
154
|
-
const task = reactive(async () => {
|
155
|
-
await Promise.resolve();
|
156
|
-
});
|
157
|
-
});
|
158
|
-
|
159
|
-
permute(1, create => {
|
160
|
-
test('computed signals are cached per context scope', async () => {
|
161
|
-
const ctx = createContext('default');
|
162
|
-
const value = state(0);
|
163
|
-
|
164
|
-
const computed = create(
|
165
|
-
() => {
|
166
|
-
return useContext(ctx) + value.get();
|
167
|
-
},
|
168
|
-
{
|
169
|
-
desc: 'subscription',
|
170
|
-
},
|
171
|
-
);
|
172
|
-
|
173
|
-
computed();
|
174
|
-
|
175
|
-
await nextTick();
|
176
|
-
|
177
|
-
// Same scope should reuse computation
|
178
|
-
expect(computed).toHaveSignalValue('default0').toMatchSnapshot();
|
179
|
-
expect(computed).toHaveSignalValue('default0').toMatchSnapshot();
|
180
|
-
|
181
|
-
const result = withContexts([[ctx, 'other']], () => {
|
182
|
-
// Different scope should compute again
|
183
|
-
return computed();
|
184
|
-
});
|
185
|
-
|
186
|
-
await nextTick();
|
187
|
-
|
188
|
-
expect(computed.withContexts([ctx, 'other']))
|
189
|
-
.toHaveSignalValue('other0')
|
190
|
-
.toMatchSnapshot();
|
191
|
-
expect(computed.withContexts([ctx, 'other']))
|
192
|
-
.toHaveSignalValue('other0')
|
193
|
-
.toMatchSnapshot();
|
194
|
-
|
195
|
-
expect(computed).toHaveSignalValue('default0').toMatchSnapshot();
|
196
|
-
});
|
197
|
-
|
198
|
-
// test.skip('computed forks when accessing forked context after being shared', async () => {
|
199
|
-
// const ctx = createContext('default');
|
200
|
-
// const value = state(0);
|
201
|
-
|
202
|
-
// const computed = create(() => {
|
203
|
-
// // Initially only depends on value, not context
|
204
|
-
// const v = value.get();
|
205
|
-
// if (v > 0) {
|
206
|
-
// // After value changes, depends on context
|
207
|
-
// return useContext(ctx);
|
208
|
-
// }
|
209
|
-
// return 'default';
|
210
|
-
// });
|
211
|
-
|
212
|
-
// // Initially computed is shared between scopes since it doesn't use context
|
213
|
-
// expect(computed).withContexts([ctx, 'scope1']).toHaveValueAndCounts('default', { compute: 1 });
|
214
|
-
// expect(computed).withContexts([ctx, 'scope2']).toHaveValueAndCounts('default', { compute: 1 });
|
215
|
-
|
216
|
-
// // Change value to make computed use context
|
217
|
-
// value.set(1);
|
218
|
-
|
219
|
-
// await nextTick();
|
220
|
-
|
221
|
-
// // Now computed should fork and use the different context values
|
222
|
-
// expect(computed).withContexts([ctx, 'scope1']).toHaveValueAndCounts('scope1', { compute: 3 });
|
223
|
-
// expect(computed).withContexts([ctx, 'scope2']).toHaveValueAndCounts('scope2', { compute: 3 });
|
224
|
-
|
225
|
-
// // Ensure that computed is cached correctly
|
226
|
-
// expect(computed).withContexts([ctx, 'scope1']).toHaveValueAndCounts('scope1', { compute: 3 });
|
227
|
-
// expect(computed).withContexts([ctx, 'scope2']).toHaveValueAndCounts('scope2', { compute: 3 });
|
228
|
-
// });
|
229
|
-
|
230
|
-
// test.skip('computed forks correctly regardless of access order', () => {
|
231
|
-
// const ctx = createContext('default');
|
232
|
-
// const value = state(0);
|
233
|
-
|
234
|
-
// const computed = create(() => {
|
235
|
-
// // Initially only depends on value, not context
|
236
|
-
// const v = value.get();
|
237
|
-
// if (v > 0) {
|
238
|
-
// // After value changes, depends on context
|
239
|
-
// return useContext(ctx);
|
240
|
-
// }
|
241
|
-
// return v;
|
242
|
-
// });
|
243
|
-
|
244
|
-
// // Create two scopes with different context values, but access in reverse order
|
245
|
-
// expect(computed).withContexts([ctx, 'scope1']).toHaveValueAndCounts(0, { compute: 1 });
|
246
|
-
|
247
|
-
// expect(computed).withContexts([ctx, 'scope2']).toHaveValueAndCounts(0, { compute: 1 }); // Still shared since no context dependency
|
248
|
-
|
249
|
-
// // Change value to make computed use context
|
250
|
-
// value.set(1);
|
251
|
-
|
252
|
-
// // Now computed should fork and use the different context values
|
253
|
-
// // Access in reverse order compared to first test
|
254
|
-
// expect(computed).withContexts([ctx, 'scope2']).toHaveValueAndCounts('scope2', { compute: 2 });
|
255
|
-
|
256
|
-
// expect(computed).withContexts([ctx, 'scope1']).toHaveValueAndCounts('scope1', { compute: 3 });
|
257
|
-
|
258
|
-
// // Ensure that computed is cached correctly
|
259
|
-
// expect(computed).withContexts([ctx, 'scope1']).toHaveValueAndCounts('scope1', { compute: 3 });
|
260
|
-
|
261
|
-
// expect(computed).withContexts([ctx, 'scope2']).toHaveValueAndCounts('scope2', { compute: 3 });
|
262
|
-
// });
|
263
|
-
|
264
|
-
// test.skip('computed ownership transfers correctly between parent and child scopes', () => {
|
265
|
-
// const ctx = createContext('default');
|
266
|
-
// const value = state(0);
|
267
|
-
|
268
|
-
// const computed = create(() => {
|
269
|
-
// // Initially only depends on value, not context
|
270
|
-
// const v = value.get();
|
271
|
-
// if (v > 0) {
|
272
|
-
// // After value changes, depends on context
|
273
|
-
// return useContext(ctx) + v;
|
274
|
-
// }
|
275
|
-
// return v;
|
276
|
-
// });
|
277
|
-
|
278
|
-
// // Initially access in parent scope
|
279
|
-
// expect(computed).toHaveValueAndCounts(0, { compute: 1 });
|
280
|
-
|
281
|
-
// // Child scope reuses original computed instance since no context dependency
|
282
|
-
// expect(computed).withContexts([ctx, 'child']).toHaveValueAndCounts(0, { compute: 1 });
|
283
|
-
|
284
|
-
// // Change value to make computed use context
|
285
|
-
// value.set(1);
|
286
|
-
|
287
|
-
// // Child scope takes ownership of parent instance
|
288
|
-
// expect(computed).withContexts([ctx, 'child']).toHaveValueAndCounts('child1', { compute: 2 });
|
289
|
-
|
290
|
-
// // Parent scope gets its own computed instance
|
291
|
-
// expect(computed).toHaveValueAndCounts('default1', { compute: 3 });
|
292
|
-
|
293
|
-
// // Third scope gets its own computed instance
|
294
|
-
// expect(computed).withContexts([ctx, 'third']).toHaveValueAndCounts('third1', { compute: 4 });
|
295
|
-
|
296
|
-
// // Ensure computeds are cached correctly
|
297
|
-
// expect(computed).withContexts([ctx, 'child']).toHaveValueAndCounts('child1', { compute: 4 });
|
298
|
-
|
299
|
-
// expect(computed).toHaveValueAndCounts('default1', { compute: 4 });
|
300
|
-
|
301
|
-
// // Verify all scopes maintain their separate computeds
|
302
|
-
// value.set(2);
|
303
|
-
|
304
|
-
// expect(computed).withContexts([ctx, 'child']).toHaveValueAndCounts('child2', { compute: 5 });
|
305
|
-
|
306
|
-
// expect(computed).toHaveValueAndCounts('default2', { compute: 6 });
|
307
|
-
|
308
|
-
// expect(computed).withContexts([ctx, 'third']).toHaveValueAndCounts('third2', { compute: 7 });
|
309
|
-
// });
|
310
|
-
});
|
311
|
-
|
312
|
-
permute(2, (create1, create2) => {
|
313
|
-
test('contexts are properly scoped', async () => {
|
314
|
-
const ctx = createContext('default');
|
315
|
-
|
316
|
-
const computed1 = create1(() => {
|
317
|
-
return useContext(ctx);
|
318
|
-
});
|
319
|
-
|
320
|
-
computed1.watch();
|
321
|
-
|
322
|
-
await nextTick();
|
323
|
-
|
324
|
-
expect(computed1).toHaveSignalValue('default').toMatchSnapshot();
|
325
|
-
|
326
|
-
const computed2 = create2(() => {
|
327
|
-
return withContexts([[ctx, 'override']], () => {
|
328
|
-
return computed1();
|
329
|
-
});
|
330
|
-
});
|
331
|
-
|
332
|
-
computed2.watch();
|
333
|
-
|
334
|
-
await nextTick();
|
335
|
-
|
336
|
-
expect(computed2).toHaveSignalValue('override').toMatchSnapshot();
|
337
|
-
// expect(computed1).toHaveSignalValue('default').toMatchSnapshot();
|
338
|
-
});
|
339
|
-
|
340
|
-
// test.skip('context dependencies are tracked correctly', () => {
|
341
|
-
// const ctx1 = createContext('default1');
|
342
|
-
// const ctx2 = createContext('default2');
|
343
|
-
|
344
|
-
// const computed1 = create1(() => {
|
345
|
-
// // Only depends on ctx1
|
346
|
-
// return useContext(ctx1);
|
347
|
-
// });
|
348
|
-
|
349
|
-
// const computed2 = create2(() => {
|
350
|
-
// // Depends on both contexts
|
351
|
-
// return computed1() + useContext(ctx2);
|
352
|
-
// });
|
353
|
-
|
354
|
-
// expect(computed2).toHaveValueAndCounts('default1default2', { compute: 1 });
|
355
|
-
// expect(computed1).toHaveCounts({ compute: 1 });
|
356
|
-
|
357
|
-
// expect(computed2).withContexts([ctx1, 'override1']).toHaveValueAndCounts('override1default2', { compute: 2 });
|
358
|
-
// expect(computed1).toHaveCounts({ compute: 2 });
|
359
|
-
|
360
|
-
// expect(computed2).withContexts([ctx2, 'override2']).toHaveValueAndCounts('default1override2', { compute: 3 });
|
361
|
-
// expect(computed1).toHaveCounts({ compute: 2 });
|
362
|
-
|
363
|
-
// expect(computed2)
|
364
|
-
// .withContexts([ctx1, 'override1'], [ctx2, 'override2'])
|
365
|
-
// .toHaveValueAndCounts('override1override2', { compute: 4 });
|
366
|
-
// expect(computed1).toHaveCounts({ compute: 3 });
|
367
|
-
|
368
|
-
// // Should reuse cached value since ctx2 didn't change
|
369
|
-
// expect(computed1).withContexts([ctx2, 'override1']).toHaveValueAndCounts('default1', { compute: 3 });
|
370
|
-
// });
|
371
|
-
|
372
|
-
test('context scopes inherit from parent scope when nested in computeds', async () => {
|
373
|
-
const ctx1 = createContext('default1');
|
374
|
-
const ctx2 = createContext('default2');
|
375
|
-
|
376
|
-
const computed1 = create1(() => {
|
377
|
-
return useContext(ctx1) + useContext(ctx2);
|
378
|
-
});
|
379
|
-
|
380
|
-
const computed2 = create2(() => {
|
381
|
-
return (
|
382
|
-
useContext(ctx2) +
|
383
|
-
withContexts([[ctx2, ':inner-override2']], () => {
|
384
|
-
return computed1();
|
385
|
-
})
|
386
|
-
);
|
387
|
-
});
|
388
|
-
|
389
|
-
computed2.watch();
|
390
|
-
computed2.withContexts([ctx1, 'override1']).watch();
|
391
|
-
computed2.withContexts([ctx2, 'override2']).watch();
|
392
|
-
computed2.withContexts([ctx1, 'override1'], [ctx2, 'override2']).watch();
|
393
|
-
|
394
|
-
await nextTick();
|
395
|
-
|
396
|
-
expect(computed2).toHaveSignalValue('default2default1:inner-override2').toMatchSnapshot();
|
397
|
-
expect(computed1).toMatchSnapshot();
|
398
|
-
|
399
|
-
expect(computed2.withContexts([ctx1, 'override1']))
|
400
|
-
.toHaveSignalValue('default2override1:inner-override2')
|
401
|
-
.toMatchSnapshot();
|
402
|
-
expect(computed1).toMatchSnapshot();
|
403
|
-
|
404
|
-
await nextTick();
|
405
|
-
|
406
|
-
expect(computed2.withContexts([ctx1, 'override1'], [ctx2, 'override2']))
|
407
|
-
.toHaveSignalValue('override2override1:inner-override2')
|
408
|
-
.toMatchSnapshot();
|
409
|
-
expect(computed1).toMatchSnapshot();
|
410
|
-
|
411
|
-
expect(computed2.withContexts([ctx2, 'override2']))
|
412
|
-
.toHaveSignalValue('override2default1:inner-override2')
|
413
|
-
.toMatchSnapshot();
|
414
|
-
expect(computed1).toMatchSnapshot();
|
415
|
-
});
|
416
|
-
});
|
417
|
-
|
418
|
-
// permute(3, (create1, create2, create3) => {
|
419
|
-
// test.skip('the gauntlet (params + state + context)', async () => {
|
420
|
-
// const ctx = createContext('ctxdefault');
|
421
|
-
// const value = state('value');
|
422
|
-
|
423
|
-
// const inner1 = create1((a: number) => {
|
424
|
-
// if (a === 3) {
|
425
|
-
// return ['inner1', useContext(ctx)];
|
426
|
-
// } else if (a === 4) {
|
427
|
-
// return ['inner1', value.get()];
|
428
|
-
// }
|
429
|
-
|
430
|
-
// return ['inner1'];
|
431
|
-
// });
|
432
|
-
|
433
|
-
// const inner2 = create2((a: number) => {
|
434
|
-
// if (a === 3) {
|
435
|
-
// return value.get() === 'value' ? ['inner2'] : ['inner2', useContext(ctx)];
|
436
|
-
// } else if (a === 4) {
|
437
|
-
// return withContexts([[ctx, 'ctxinneroverride']], () => {
|
438
|
-
// return ['inner2', inner1(3), value.get()];
|
439
|
-
// });
|
440
|
-
// }
|
441
|
-
|
442
|
-
// return ['inner2', inner1(a)];
|
443
|
-
// });
|
444
|
-
|
445
|
-
// const outer = create3((a: number) => {
|
446
|
-
// if (a === 1) {
|
447
|
-
// return [inner1(1), inner2(2)];
|
448
|
-
// } else if (a === 2) {
|
449
|
-
// return [inner1(2), inner2(3)];
|
450
|
-
// } else if (a === 3) {
|
451
|
-
// return [inner1(3), inner2(4)];
|
452
|
-
// } else if (a === 4) {
|
453
|
-
// return [useContext(ctx), inner2(4)];
|
454
|
-
// } else if (a === 5) {
|
455
|
-
// return [inner1(5), value.get()];
|
456
|
-
// }
|
457
|
-
// });
|
458
|
-
|
459
|
-
// // a === 1
|
460
|
-
// expect(outer)
|
461
|
-
// .withParams(1)
|
462
|
-
// .toHaveValueAndCounts([['inner1'], ['inner2', ['inner1']]], { compute: 1 });
|
463
|
-
// expect(inner1).toHaveCounts({ compute: 2 });
|
464
|
-
// expect(inner2).toHaveCounts({ compute: 1 });
|
465
|
-
|
466
|
-
// expect(outer)
|
467
|
-
// .withContexts([ctx, 'ctxoverride'])
|
468
|
-
// .withParams(1)
|
469
|
-
// .toHaveValueAndCounts([['inner1'], ['inner2', ['inner1']]], { compute: 1 });
|
470
|
-
// expect(inner1).toHaveCounts({ compute: 2 });
|
471
|
-
// expect(inner2).toHaveCounts({ compute: 1 });
|
472
|
-
|
473
|
-
// // a === 2
|
474
|
-
// expect(outer)
|
475
|
-
// .withParams(2)
|
476
|
-
// .toHaveValueAndCounts([['inner1'], ['inner2']], {
|
477
|
-
// compute: 2,
|
478
|
-
// });
|
479
|
-
// expect(inner1).toHaveCounts({ compute: 2 });
|
480
|
-
// expect(inner2).toHaveCounts({ compute: 2 });
|
481
|
-
|
482
|
-
// expect(outer)
|
483
|
-
// .withParams(2)
|
484
|
-
// .withContexts([ctx, 'ctxoverride'])
|
485
|
-
// .toHaveValueAndCounts([['inner1'], ['inner2']], {
|
486
|
-
// compute: 2,
|
487
|
-
// });
|
488
|
-
// expect(inner1).toHaveCounts({ compute: 2 });
|
489
|
-
// expect(inner2).toHaveCounts({ compute: 2 });
|
490
|
-
|
491
|
-
// // a === 3
|
492
|
-
// expect(outer)
|
493
|
-
// .withParams(3)
|
494
|
-
// .toHaveValueAndCounts(
|
495
|
-
// [
|
496
|
-
// ['inner1', 'ctxdefault'],
|
497
|
-
// ['inner2', ['inner1', 'ctxinneroverride'], 'value'],
|
498
|
-
// ],
|
499
|
-
// {
|
500
|
-
// compute: 3,
|
501
|
-
// },
|
502
|
-
// );
|
503
|
-
// expect(inner1).toHaveCounts({ compute: 4 });
|
504
|
-
// expect(inner2).toHaveCounts({ compute: 3 });
|
505
|
-
|
506
|
-
// expect(outer)
|
507
|
-
// .withParams(3)
|
508
|
-
// .withContexts([ctx, 'ctxoverride'])
|
509
|
-
// .toHaveValueAndCounts(
|
510
|
-
// [
|
511
|
-
// ['inner1', 'ctxoverride'],
|
512
|
-
// ['inner2', ['inner1', 'ctxinneroverride'], 'value'],
|
513
|
-
// ],
|
514
|
-
// {
|
515
|
-
// compute: 4,
|
516
|
-
// },
|
517
|
-
// );
|
518
|
-
// expect(inner1).toHaveCounts({ compute: 6 });
|
519
|
-
// expect(inner2).toHaveCounts({ compute: 4 });
|
520
|
-
|
521
|
-
// // a === 4
|
522
|
-
// expect(outer)
|
523
|
-
// .withParams(4)
|
524
|
-
// .toHaveValueAndCounts(['ctxdefault', ['inner2', ['inner1', 'ctxinneroverride'], 'value']], {
|
525
|
-
// compute: 5,
|
526
|
-
// });
|
527
|
-
// expect(inner1).toHaveCounts({ compute: 6 });
|
528
|
-
// expect(inner2).toHaveCounts({ compute: 4 });
|
529
|
-
|
530
|
-
// expect(outer)
|
531
|
-
// .withParams(4)
|
532
|
-
// .withContexts([ctx, 'ctxoverride'])
|
533
|
-
// .toHaveValueAndCounts(['ctxoverride', ['inner2', ['inner1', 'ctxinneroverride'], 'value']], {
|
534
|
-
// compute: 6,
|
535
|
-
// });
|
536
|
-
// expect(inner1).toHaveCounts({ compute: 6 });
|
537
|
-
// expect(inner2).toHaveCounts({ compute: 4 });
|
538
|
-
|
539
|
-
// // a === 5
|
540
|
-
// expect(outer)
|
541
|
-
// .withParams(5)
|
542
|
-
// .toHaveValueAndCounts([['inner1'], 'value'], {
|
543
|
-
// compute: 7,
|
544
|
-
// });
|
545
|
-
// expect(inner1).toHaveCounts({ compute: 7 });
|
546
|
-
// expect(inner2).toHaveCounts({ compute: 4 });
|
547
|
-
|
548
|
-
// expect(outer)
|
549
|
-
// .withParams(5)
|
550
|
-
// .withContexts([ctx, 'ctxoverride'])
|
551
|
-
// .toHaveValueAndCounts([['inner1'], 'value'], {
|
552
|
-
// compute: 8,
|
553
|
-
// });
|
554
|
-
// expect(inner1).toHaveCounts({ compute: 8 });
|
555
|
-
// expect(inner2).toHaveCounts({ compute: 4 });
|
556
|
-
|
557
|
-
// value.set('value2');
|
558
|
-
// await nextTick();
|
559
|
-
|
560
|
-
// // a === 1
|
561
|
-
// expect(outer)
|
562
|
-
// .withParams(1)
|
563
|
-
// .toHaveSignalValue([['inner1'], ['inner2', ['inner1']]]);
|
564
|
-
|
565
|
-
// expect(outer)
|
566
|
-
// .withContexts([ctx, 'ctxoverride'])
|
567
|
-
// .withParams(1)
|
568
|
-
// .toHaveSignalValue([['inner1'], ['inner2', ['inner1']]]);
|
569
|
-
|
570
|
-
// // a === 2
|
571
|
-
// expect(outer)
|
572
|
-
// .withParams(2)
|
573
|
-
// .toHaveSignalValue([['inner1'], ['inner2', 'ctxdefault']]);
|
574
|
-
|
575
|
-
// expect(outer)
|
576
|
-
// .withParams(2)
|
577
|
-
// .withContexts([ctx, 'ctxoverride'])
|
578
|
-
// .toHaveSignalValue([['inner1'], ['inner2', 'ctxoverride']]);
|
579
|
-
|
580
|
-
// // a === 3
|
581
|
-
// expect(outer)
|
582
|
-
// .withParams(3)
|
583
|
-
// .toHaveSignalValue([
|
584
|
-
// ['inner1', 'ctxdefault'],
|
585
|
-
// ['inner2', ['inner1', 'ctxinneroverride'], 'value2'],
|
586
|
-
// ]);
|
587
|
-
|
588
|
-
// expect(outer)
|
589
|
-
// .withParams(3)
|
590
|
-
// .withContexts([ctx, 'ctxoverride'])
|
591
|
-
// .toHaveSignalValue([
|
592
|
-
// ['inner1', 'ctxoverride'],
|
593
|
-
// ['inner2', ['inner1', 'ctxinneroverride'], 'value2'],
|
594
|
-
// ]);
|
595
|
-
|
596
|
-
// // a === 4
|
597
|
-
// expect(outer)
|
598
|
-
// .withParams(4)
|
599
|
-
// .toHaveSignalValue(['ctxdefault', ['inner2', ['inner1', 'ctxinneroverride'], 'value2']]);
|
600
|
-
|
601
|
-
// expect(outer)
|
602
|
-
// .withParams(4)
|
603
|
-
// .withContexts([ctx, 'ctxoverride'])
|
604
|
-
// .toHaveSignalValue(['ctxoverride', ['inner2', ['inner1', 'ctxinneroverride'], 'value2']]);
|
605
|
-
|
606
|
-
// // a === 5
|
607
|
-
// expect(outer)
|
608
|
-
// .withParams(5)
|
609
|
-
// .toHaveSignalValue([['inner1'], 'value2']);
|
610
|
-
// expect(outer)
|
611
|
-
// .withParams(5)
|
612
|
-
// .withContexts([ctx, 'ctxoverride'])
|
613
|
-
// .toHaveSignalValue([['inner1'], 'value2']);
|
614
|
-
|
615
|
-
// expect(inner1).toHaveCounts({ compute: 10 });
|
616
|
-
// expect(inner2).toHaveCounts({ compute: 9 });
|
617
|
-
// });
|
618
|
-
// });
|
619
|
-
});
|