@typed/fx 1.12.5 → 1.12.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"keyed.d.ts","sourceRoot":"","sources":["../../src/keyed.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EACzC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAC1B,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAClB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CA4ClC"}
1
+ {"version":3,"file":"keyed.d.ts","sourceRoot":"","sources":["../../src/keyed.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EACzC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAC1B,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAClB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAyClC"}
package/dist/cjs/keyed.js CHANGED
@@ -22,18 +22,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.keyed = void 0;
30
27
  const MutableHashMap = __importStar(require("@effect/data/MutableHashMap"));
31
28
  const Option = __importStar(require("@effect/data/Option"));
32
29
  const ReadonlyArray = __importStar(require("@effect/data/ReadonlyArray"));
33
- const Equivalence = __importStar(require("@effect/data/typeclass/Equivalence"));
34
30
  const Effect = __importStar(require("@effect/io/Effect"));
35
31
  const Fiber = __importStar(require("@effect/io/Fiber"));
36
- const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
37
32
  const Fx_js_1 = require("./Fx.js");
38
33
  const RefSubject_js_1 = require("./RefSubject.js");
39
34
  const Subject_js_1 = require("./Subject.js");
@@ -41,63 +36,99 @@ const helpers_js_1 = require("./helpers.js");
41
36
  function keyed(fx, f, getKey) {
42
37
  return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withScopedFork)((fork) => Effect.gen(function* ($) {
43
38
  const state = createKeyedState();
44
- const eq = Equivalence.make((x, y) => (0, fast_deep_equal_1.default)(getKey(x), getKey(y)));
45
- const difference = ReadonlyArray.difference(eq);
46
- const intersection = ReadonlyArray.intersection(eq);
47
39
  const emit = emitWhenReady(state, getKey);
48
40
  // Let output emit to the sink
49
- const fiber = yield* $(fork(state.output.run(sink)));
50
- // Listen to the input and update the state
51
- yield* $(fx.run((0, Fx_js_1.Sink)((as) => updateState({
41
+ yield* $(fork(state.output.run(sink)));
42
+ const params = {
52
43
  state,
53
- updated: as,
54
44
  getKey,
55
45
  f,
56
46
  fork,
57
- difference,
58
- intersection,
59
47
  emit,
60
48
  error: sink.error,
49
+ };
50
+ // Listen to the input and update the state
51
+ yield* $(fx.run((0, Fx_js_1.Sink)((updated) => updateState({
52
+ ...params,
53
+ updated,
61
54
  }), sink.error)));
62
- yield* $(endAll(state));
63
55
  // When the source stream ends we wait for the remaining fibers to end
64
56
  yield* $(Fiber.joinAll(Array.from(state.fibers).map((x) => x[1])));
65
- // Terminate the output fiber
66
- yield* $(Fiber.interrupt(fiber));
57
+ // Send end signals to all Fx listening to subjects to allow finalization
58
+ yield* $(endAll(state));
67
59
  })));
68
60
  }
69
61
  exports.keyed = keyed;
70
62
  function createKeyedState() {
71
63
  return {
72
64
  previous: [],
73
- ended: false,
65
+ previousKeys: new Set(),
74
66
  subjects: MutableHashMap.empty(),
75
67
  fibers: MutableHashMap.empty(),
76
68
  values: MutableHashMap.empty(),
77
69
  output: (0, Subject_js_1.makeHoldSubject)(),
78
70
  };
79
71
  }
80
- function updateState({ state, updated, f, fork, difference, intersection, emit, error, getKey, }) {
72
+ function updateState(params) {
73
+ const { state, updated, emit, getKey } = params;
81
74
  return Effect.gen(function* ($) {
82
- const added = difference(updated, state.previous);
83
- const removed = difference(state.previous, updated);
84
- const unchanged = intersection(updated, state.previous);
85
- state.previous = updated;
75
+ const { added, removed, unchanged } = diffValues(state, updated, getKey);
86
76
  // Remove values that are no longer in the stream
87
- yield* $(Effect.forEachParDiscard(removed, (value) => removeValue(state, value, getKey)));
77
+ if (removed.length > 0) {
78
+ yield* $(Effect.forEachDiscard(removed, (key) => removeValue(state, key)));
79
+ }
88
80
  // Add values that are new to the stream
89
- yield* $(Effect.forEachParDiscard(added, (value) => addValue({ state, value, f, fork, emit, error, getKey })));
81
+ if (added.length > 0) {
82
+ yield* $(Effect.forEachDiscard(added, (value) => addValue({ ...params, value })));
83
+ }
90
84
  // Update values that are still in the stream
91
- yield* $(Effect.forEachParDiscard(unchanged, (value) => updateValue(state, value, getKey)));
85
+ if (unchanged.length > 0) {
86
+ yield* $(Effect.forEachDiscard(unchanged, (value) => updateValue(state, value, getKey)));
87
+ }
92
88
  // If nothing was added, emit the current values
93
89
  if (added.length === 0) {
94
90
  yield* $(emit);
95
91
  }
96
92
  });
97
93
  }
98
- function removeValue(state, value, getKey) {
99
- return Effect.gen(function* ($) {
94
+ function diffValues(state, updated, getKey) {
95
+ const previousKeys = state.previousKeys;
96
+ const keys = new Set(updated.map(getKey));
97
+ state.previous = updated;
98
+ state.previousKeys = keys;
99
+ if (previousKeys.size === 0) {
100
+ return {
101
+ added: updated,
102
+ unchanged: [],
103
+ removed: [],
104
+ };
105
+ }
106
+ const added = [];
107
+ const unchanged = [];
108
+ const removed = [];
109
+ for (let i = 0; i < updated.length; ++i) {
110
+ const value = updated[i];
100
111
  const key = getKey(value);
112
+ if (previousKeys.has(key)) {
113
+ unchanged.push(value);
114
+ }
115
+ else {
116
+ added.push(value);
117
+ }
118
+ }
119
+ previousKeys.forEach((k) => {
120
+ if (!keys.has(k)) {
121
+ removed.push(k);
122
+ }
123
+ });
124
+ return {
125
+ added,
126
+ unchanged,
127
+ removed,
128
+ };
129
+ }
130
+ function removeValue(state, key) {
131
+ return Effect.gen(function* ($) {
101
132
  const subject = MutableHashMap.get(state.subjects, key);
102
133
  if (Option.isSome(subject))
103
134
  yield* $(Effect.fork(subject.value.end()));
@@ -133,6 +164,10 @@ function updateValue(state, value, getKey) {
133
164
  }
134
165
  function emitWhenReady(state, getKey) {
135
166
  return Effect.suspend(() => {
167
+ // Fast path: if we don't have enough values, don't emit
168
+ if (MutableHashMap.size(state.values) !== state.previous.length) {
169
+ return Effect.unit();
170
+ }
136
171
  const values = ReadonlyArray.filterMap(state.previous, (value) => MutableHashMap.get(state.values, getKey(value)));
137
172
  // When all of the values have resolved at least once, emit the output
138
173
  if (values.length === state.previous.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"keyed.js","sourceRoot":"","sources":["../../src/keyed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyed.js","sourceRoot":"","sources":["../../src/keyed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"keyed.d.ts","sourceRoot":"","sources":["../src/keyed.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EACzC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAC1B,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAClB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CA4ClC"}
1
+ {"version":3,"file":"keyed.d.ts","sourceRoot":"","sources":["../src/keyed.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EACzC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAC1B,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAClB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAyClC"}
package/dist/keyed.js CHANGED
@@ -1,10 +1,8 @@
1
1
  import * as MutableHashMap from '@effect/data/MutableHashMap';
2
2
  import * as Option from '@effect/data/Option';
3
3
  import * as ReadonlyArray from '@effect/data/ReadonlyArray';
4
- import * as Equivalence from '@effect/data/typeclass/Equivalence';
5
4
  import * as Effect from '@effect/io/Effect';
6
5
  import * as Fiber from '@effect/io/Fiber';
7
- import fastDeepEqual from 'fast-deep-equal';
8
6
  import { Fx, Sink } from './Fx.js';
9
7
  import { RefSubject } from './RefSubject.js';
10
8
  import { makeHoldSubject } from './Subject.js';
@@ -12,62 +10,98 @@ import { withScopedFork } from './helpers.js';
12
10
  export function keyed(fx, f, getKey) {
13
11
  return Fx((sink) => withScopedFork((fork) => Effect.gen(function* ($) {
14
12
  const state = createKeyedState();
15
- const eq = Equivalence.make((x, y) => fastDeepEqual(getKey(x), getKey(y)));
16
- const difference = ReadonlyArray.difference(eq);
17
- const intersection = ReadonlyArray.intersection(eq);
18
13
  const emit = emitWhenReady(state, getKey);
19
14
  // Let output emit to the sink
20
- const fiber = yield* $(fork(state.output.run(sink)));
21
- // Listen to the input and update the state
22
- yield* $(fx.run(Sink((as) => updateState({
15
+ yield* $(fork(state.output.run(sink)));
16
+ const params = {
23
17
  state,
24
- updated: as,
25
18
  getKey,
26
19
  f,
27
20
  fork,
28
- difference,
29
- intersection,
30
21
  emit,
31
22
  error: sink.error,
23
+ };
24
+ // Listen to the input and update the state
25
+ yield* $(fx.run(Sink((updated) => updateState({
26
+ ...params,
27
+ updated,
32
28
  }), sink.error)));
33
- yield* $(endAll(state));
34
29
  // When the source stream ends we wait for the remaining fibers to end
35
30
  yield* $(Fiber.joinAll(Array.from(state.fibers).map((x) => x[1])));
36
- // Terminate the output fiber
37
- yield* $(Fiber.interrupt(fiber));
31
+ // Send end signals to all Fx listening to subjects to allow finalization
32
+ yield* $(endAll(state));
38
33
  })));
39
34
  }
40
35
  function createKeyedState() {
41
36
  return {
42
37
  previous: [],
43
- ended: false,
38
+ previousKeys: new Set(),
44
39
  subjects: MutableHashMap.empty(),
45
40
  fibers: MutableHashMap.empty(),
46
41
  values: MutableHashMap.empty(),
47
42
  output: makeHoldSubject(),
48
43
  };
49
44
  }
50
- function updateState({ state, updated, f, fork, difference, intersection, emit, error, getKey, }) {
45
+ function updateState(params) {
46
+ const { state, updated, emit, getKey } = params;
51
47
  return Effect.gen(function* ($) {
52
- const added = difference(updated, state.previous);
53
- const removed = difference(state.previous, updated);
54
- const unchanged = intersection(updated, state.previous);
55
- state.previous = updated;
48
+ const { added, removed, unchanged } = diffValues(state, updated, getKey);
56
49
  // Remove values that are no longer in the stream
57
- yield* $(Effect.forEachParDiscard(removed, (value) => removeValue(state, value, getKey)));
50
+ if (removed.length > 0) {
51
+ yield* $(Effect.forEachDiscard(removed, (key) => removeValue(state, key)));
52
+ }
58
53
  // Add values that are new to the stream
59
- yield* $(Effect.forEachParDiscard(added, (value) => addValue({ state, value, f, fork, emit, error, getKey })));
54
+ if (added.length > 0) {
55
+ yield* $(Effect.forEachDiscard(added, (value) => addValue({ ...params, value })));
56
+ }
60
57
  // Update values that are still in the stream
61
- yield* $(Effect.forEachParDiscard(unchanged, (value) => updateValue(state, value, getKey)));
58
+ if (unchanged.length > 0) {
59
+ yield* $(Effect.forEachDiscard(unchanged, (value) => updateValue(state, value, getKey)));
60
+ }
62
61
  // If nothing was added, emit the current values
63
62
  if (added.length === 0) {
64
63
  yield* $(emit);
65
64
  }
66
65
  });
67
66
  }
68
- function removeValue(state, value, getKey) {
69
- return Effect.gen(function* ($) {
67
+ function diffValues(state, updated, getKey) {
68
+ const previousKeys = state.previousKeys;
69
+ const keys = new Set(updated.map(getKey));
70
+ state.previous = updated;
71
+ state.previousKeys = keys;
72
+ if (previousKeys.size === 0) {
73
+ return {
74
+ added: updated,
75
+ unchanged: [],
76
+ removed: [],
77
+ };
78
+ }
79
+ const added = [];
80
+ const unchanged = [];
81
+ const removed = [];
82
+ for (let i = 0; i < updated.length; ++i) {
83
+ const value = updated[i];
70
84
  const key = getKey(value);
85
+ if (previousKeys.has(key)) {
86
+ unchanged.push(value);
87
+ }
88
+ else {
89
+ added.push(value);
90
+ }
91
+ }
92
+ previousKeys.forEach((k) => {
93
+ if (!keys.has(k)) {
94
+ removed.push(k);
95
+ }
96
+ });
97
+ return {
98
+ added,
99
+ unchanged,
100
+ removed,
101
+ };
102
+ }
103
+ function removeValue(state, key) {
104
+ return Effect.gen(function* ($) {
71
105
  const subject = MutableHashMap.get(state.subjects, key);
72
106
  if (Option.isSome(subject))
73
107
  yield* $(Effect.fork(subject.value.end()));
@@ -103,6 +137,10 @@ function updateValue(state, value, getKey) {
103
137
  }
104
138
  function emitWhenReady(state, getKey) {
105
139
  return Effect.suspend(() => {
140
+ // Fast path: if we don't have enough values, don't emit
141
+ if (MutableHashMap.size(state.values) !== state.previous.length) {
142
+ return Effect.unit();
143
+ }
106
144
  const values = ReadonlyArray.filterMap(state.previous, (value) => MutableHashMap.get(state.values, getKey(value)));
107
145
  // When all of the values have resolved at least once, emit the output
108
146
  if (values.length === state.previous.length) {
package/dist/keyed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"keyed.js","sourceRoot":"","sources":["../src/keyed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyed.js","sourceRoot":"","sources":["../src/keyed.ts"],"names":[],"mappings":"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"}