effect 3.6.3 → 3.6.5

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 (76) hide show
  1. package/dist/cjs/Cache.js +6 -1
  2. package/dist/cjs/Cache.js.map +1 -1
  3. package/dist/cjs/DateTime.js +1 -1
  4. package/dist/cjs/DateTime.js.map +1 -1
  5. package/dist/cjs/Metric.js +12 -3
  6. package/dist/cjs/Metric.js.map +1 -1
  7. package/dist/cjs/MetricHook.js +6 -1
  8. package/dist/cjs/MetricHook.js.map +1 -1
  9. package/dist/cjs/Pipeable.js +2 -0
  10. package/dist/cjs/Pipeable.js.map +1 -1
  11. package/dist/cjs/Scheduler.js +7 -12
  12. package/dist/cjs/Scheduler.js.map +1 -1
  13. package/dist/cjs/internal/cache.js +14 -1
  14. package/dist/cjs/internal/cache.js.map +1 -1
  15. package/dist/cjs/internal/core-effect.js +15 -7
  16. package/dist/cjs/internal/core-effect.js.map +1 -1
  17. package/dist/cjs/internal/metric/hook.js +32 -10
  18. package/dist/cjs/internal/metric/hook.js.map +1 -1
  19. package/dist/cjs/internal/metric/keyType.js +12 -48
  20. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  21. package/dist/cjs/internal/metric/polling.js +7 -1
  22. package/dist/cjs/internal/metric/polling.js.map +1 -1
  23. package/dist/cjs/internal/metric.js +21 -13
  24. package/dist/cjs/internal/metric.js.map +1 -1
  25. package/dist/cjs/internal/version.js +1 -1
  26. package/dist/dts/Cache.d.ts +24 -3
  27. package/dist/dts/Cache.d.ts.map +1 -1
  28. package/dist/dts/Metric.d.ts +21 -8
  29. package/dist/dts/Metric.d.ts.map +1 -1
  30. package/dist/dts/MetricHook.d.ts +10 -0
  31. package/dist/dts/MetricHook.d.ts.map +1 -1
  32. package/dist/dts/Pipeable.d.ts +1 -0
  33. package/dist/dts/Pipeable.d.ts.map +1 -1
  34. package/dist/dts/Scheduler.d.ts.map +1 -1
  35. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  36. package/dist/dts/internal/metric/keyType.d.ts +1 -89
  37. package/dist/dts/internal/metric/keyType.d.ts.map +1 -1
  38. package/dist/esm/Cache.js +5 -0
  39. package/dist/esm/Cache.js.map +1 -1
  40. package/dist/esm/DateTime.js +1 -1
  41. package/dist/esm/DateTime.js.map +1 -1
  42. package/dist/esm/Metric.js +11 -2
  43. package/dist/esm/Metric.js.map +1 -1
  44. package/dist/esm/MetricHook.js +5 -0
  45. package/dist/esm/MetricHook.js.map +1 -1
  46. package/dist/esm/Pipeable.js +2 -0
  47. package/dist/esm/Pipeable.js.map +1 -1
  48. package/dist/esm/Scheduler.js +7 -12
  49. package/dist/esm/Scheduler.js.map +1 -1
  50. package/dist/esm/internal/cache.js +13 -0
  51. package/dist/esm/internal/cache.js.map +1 -1
  52. package/dist/esm/internal/core-effect.js +15 -7
  53. package/dist/esm/internal/core-effect.js.map +1 -1
  54. package/dist/esm/internal/metric/hook.js +31 -9
  55. package/dist/esm/internal/metric/hook.js.map +1 -1
  56. package/dist/esm/internal/metric/keyType.js +12 -48
  57. package/dist/esm/internal/metric/keyType.js.map +1 -1
  58. package/dist/esm/internal/metric/polling.js +7 -1
  59. package/dist/esm/internal/metric/polling.js.map +1 -1
  60. package/dist/esm/internal/metric.js +20 -12
  61. package/dist/esm/internal/metric.js.map +1 -1
  62. package/dist/esm/internal/version.js +1 -1
  63. package/package.json +1 -1
  64. package/src/Cache.ts +30 -3
  65. package/src/DateTime.ts +1 -1
  66. package/src/Metric.ts +25 -9
  67. package/src/MetricHook.ts +11 -0
  68. package/src/Pipeable.ts +3 -0
  69. package/src/Scheduler.ts +7 -12
  70. package/src/internal/cache.ts +18 -0
  71. package/src/internal/core-effect.ts +22 -18
  72. package/src/internal/metric/hook.ts +36 -9
  73. package/src/internal/metric/keyType.ts +12 -48
  74. package/src/internal/metric/polling.ts +8 -1
  75. package/src/internal/metric.ts +61 -17
  76. package/src/internal/version.ts +1 -1
@@ -9,6 +9,7 @@ import * as _effect from "./core-effect.js";
9
9
  import * as core from "./core.js";
10
10
  import * as metricBoundaries from "./metric/boundaries.js";
11
11
  import * as metricKey from "./metric/key.js";
12
+ import * as metricKeyType from "./metric/keyType.js";
12
13
  import * as metricLabel from "./metric/label.js";
13
14
  import * as metricRegistry from "./metric/registry.js";
14
15
  /** @internal */
@@ -26,12 +27,13 @@ const metricVariance = {
26
27
  /** @internal */
27
28
  export const globalMetricRegistry = /*#__PURE__*/globalValue( /*#__PURE__*/Symbol.for("effect/Metric/globalMetricRegistry"), () => metricRegistry.make());
28
29
  /** @internal */
29
- export const make = function (keyType, unsafeUpdate, unsafeValue) {
30
+ export const make = function (keyType, unsafeUpdate, unsafeValue, unsafeModify) {
30
31
  const metric = Object.assign(effect => core.tap(effect, a => update(metric, a)), {
31
32
  [MetricTypeId]: metricVariance,
32
33
  keyType,
33
34
  unsafeUpdate,
34
35
  unsafeValue,
36
+ unsafeModify,
35
37
  register() {
36
38
  this.unsafeValue([]);
37
39
  return this;
@@ -43,7 +45,7 @@ export const make = function (keyType, unsafeUpdate, unsafeValue) {
43
45
  return metric;
44
46
  };
45
47
  /** @internal */
46
- export const mapInput = /*#__PURE__*/dual(2, (self, f) => make(self.keyType, (input, extraTags) => self.unsafeUpdate(f(input), extraTags), self.unsafeValue));
48
+ export const mapInput = /*#__PURE__*/dual(2, (self, f) => make(self.keyType, (input, extraTags) => self.unsafeUpdate(f(input), extraTags), self.unsafeValue, (input, extraTags) => self.unsafeModify(f(input), extraTags)));
47
49
  /** @internal */
48
50
  export const counter = (name, options) => fromMetricKey(metricKey.counter(name, options));
49
51
  /** @internal */
@@ -70,26 +72,28 @@ export const fromMetricKey = key => {
70
72
  hookCache.set(extraTags, hook);
71
73
  return hook;
72
74
  };
73
- return make(key.keyType, (input, extraTags) => hook(extraTags).update(input), extraTags => hook(extraTags).get());
75
+ return make(key.keyType, (input, extraTags) => hook(extraTags).update(input), extraTags => hook(extraTags).get(), (input, extraTags) => hook(extraTags).modify(input));
74
76
  };
75
77
  /** @internal */
76
78
  export const gauge = (name, options) => fromMetricKey(metricKey.gauge(name, options));
77
79
  /** @internal */
78
80
  export const histogram = (name, boundaries, description) => fromMetricKey(metricKey.histogram(name, boundaries, description));
79
81
  /* @internal */
80
- export const increment = self => update(self, self.keyType.bigint ? BigInt(1) : 1);
82
+ export const increment = self => metricKeyType.isCounterKey(self.keyType) ? update(self, self.keyType.bigint ? BigInt(1) : 1) : modify(self, self.keyType.bigint ? BigInt(1) : 1);
81
83
  /* @internal */
82
- export const incrementBy = /*#__PURE__*/dual(2, (self, amount) => update(self, amount));
84
+ export const incrementBy = /*#__PURE__*/dual(2, (self, amount) => metricKeyType.isCounterKey(self.keyType) ? update(self, amount) : modify(self, amount));
83
85
  /** @internal */
84
- export const map = /*#__PURE__*/dual(2, (self, f) => make(self.keyType, self.unsafeUpdate, extraTags => f(self.unsafeValue(extraTags))));
86
+ export const map = /*#__PURE__*/dual(2, (self, f) => make(self.keyType, self.unsafeUpdate, extraTags => f(self.unsafeValue(extraTags)), self.unsafeModify));
85
87
  /** @internal */
86
- export const mapType = /*#__PURE__*/dual(2, (self, f) => make(f(self.keyType), self.unsafeUpdate, self.unsafeValue));
88
+ export const mapType = /*#__PURE__*/dual(2, (self, f) => make(f(self.keyType), self.unsafeUpdate, self.unsafeValue, self.unsafeModify));
89
+ /** @internal */
90
+ export const modify = /*#__PURE__*/dual(2, (self, input) => core.fiberRefGetWith(core.currentMetricLabels, tags => core.sync(() => self.unsafeModify(input, tags))));
87
91
  /* @internal */
88
92
  export const set = /*#__PURE__*/dual(2, (self, value) => update(self, value));
89
93
  /** @internal */
90
- export const succeed = out => make(void 0, constVoid, () => out);
94
+ export const succeed = out => make(void 0, constVoid, () => out, constVoid);
91
95
  /** @internal */
92
- export const sync = evaluate => make(void 0, constVoid, evaluate);
96
+ export const sync = evaluate => make(void 0, constVoid, evaluate, constVoid);
93
97
  /** @internal */
94
98
  export const summary = options => withNow(summaryTimestamp(options));
95
99
  /** @internal */
@@ -97,10 +101,10 @@ export const summaryTimestamp = options => fromMetricKey(metricKey.summary(optio
97
101
  /** @internal */
98
102
  export const tagged = /*#__PURE__*/dual(3, (self, key, value) => taggedWithLabels(self, [metricLabel.make(key, value)]));
99
103
  /** @internal */
100
- export const taggedWithLabelsInput = /*#__PURE__*/dual(2, (self, f) => map(make(self.keyType, (input, extraTags) => self.unsafeUpdate(input, Arr.union(f(input), extraTags)), self.unsafeValue), constVoid));
104
+ export const taggedWithLabelsInput = /*#__PURE__*/dual(2, (self, f) => map(make(self.keyType, (input, extraTags) => self.unsafeUpdate(input, Arr.union(f(input), extraTags)), self.unsafeValue, (input, extraTags) => self.unsafeModify(input, Arr.union(f(input), extraTags))), constVoid));
101
105
  /** @internal */
102
106
  export const taggedWithLabels = /*#__PURE__*/dual(2, (self, extraTags) => {
103
- return make(self.keyType, (input, extraTags1) => self.unsafeUpdate(input, Arr.union(extraTags, extraTags1)), extraTags1 => self.unsafeValue(Arr.union(extraTags, extraTags1)));
107
+ return make(self.keyType, (input, extraTags1) => self.unsafeUpdate(input, Arr.union(extraTags, extraTags1)), extraTags1 => self.unsafeValue(Arr.union(extraTags, extraTags1)), (input, extraTags1) => self.unsafeModify(input, Arr.union(extraTags, extraTags1)));
104
108
  });
105
109
  /** @internal */
106
110
  export const timer = (name, description) => {
@@ -165,7 +169,11 @@ export const zip = /*#__PURE__*/dual(2, (self, that) => make([self.keyType, that
165
169
  const [l, r] = input;
166
170
  self.unsafeUpdate(l, extraTags);
167
171
  that.unsafeUpdate(r, extraTags);
168
- }, extraTags => [self.unsafeValue(extraTags), that.unsafeValue(extraTags)]));
172
+ }, extraTags => [self.unsafeValue(extraTags), that.unsafeValue(extraTags)], (input, extraTags) => {
173
+ const [l, r] = input;
174
+ self.unsafeModify(l, extraTags);
175
+ that.unsafeModify(r, extraTags);
176
+ }));
169
177
  /** @internal */
170
178
  export const unsafeSnapshot = () => globalMetricRegistry.snapshot();
171
179
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"metric.js","names":["Arr","Clock","Duration","constVoid","dual","identity","pipe","globalValue","pipeArguments","Cause","_effect","core","metricBoundaries","metricKey","metricLabel","metricRegistry","MetricSymbolKey","MetricTypeId","Symbol","for","metricVariance","_Type","_","_In","_Out","globalMetricRegistry","make","keyType","unsafeUpdate","unsafeValue","metric","Object","assign","effect","tap","a","update","register","arguments","mapInput","self","f","input","extraTags","counter","name","options","fromMetricKey","frequency","withConstantInput","key","untaggedHook","hookCache","WeakMap","hook","length","undefined","get","taggedWithLabels","set","gauge","histogram","boundaries","description","increment","bigint","BigInt","incrementBy","amount","map","mapType","value","succeed","out","sync","evaluate","summary","withNow","summaryTimestamp","tagged","taggedWithLabelsInput","union","extraTags1","timer","exponential","start","factor","count","base","toMillis","timerWithBoundaries","fromIterable","trackAll","matchCauseEffect","onFailure","cause","zipRight","failCause","onSuccess","trackDefect","trackDefectWith","updater","defect","tapDefect","forEachSequentialDiscard","defects","trackDuration","trackDurationWith","clockWith","clock","startTime","unsafeCurrentTimeNanos","endTime","duration","nanos","trackError","trackErrorWith","error","tapError","trackSuccess","trackSuccessWith","fiberRefGetWith","currentMetricLabels","tags","Date","now","zip","that","l","r","unsafeSnapshot","snapshot"],"sources":["../../../src/internal/metric.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"metric.js","names":["Arr","Clock","Duration","constVoid","dual","identity","pipe","globalValue","pipeArguments","Cause","_effect","core","metricBoundaries","metricKey","metricKeyType","metricLabel","metricRegistry","MetricSymbolKey","MetricTypeId","Symbol","for","metricVariance","_Type","_","_In","_Out","globalMetricRegistry","make","keyType","unsafeUpdate","unsafeValue","unsafeModify","metric","Object","assign","effect","tap","a","update","register","arguments","mapInput","self","f","input","extraTags","counter","name","options","fromMetricKey","frequency","withConstantInput","key","untaggedHook","hookCache","WeakMap","hook","length","undefined","get","taggedWithLabels","set","modify","gauge","histogram","boundaries","description","increment","isCounterKey","bigint","BigInt","incrementBy","amount","map","mapType","fiberRefGetWith","currentMetricLabels","tags","sync","value","succeed","out","evaluate","summary","withNow","summaryTimestamp","tagged","taggedWithLabelsInput","union","extraTags1","timer","exponential","start","factor","count","base","toMillis","timerWithBoundaries","fromIterable","trackAll","matchCauseEffect","onFailure","cause","zipRight","failCause","onSuccess","trackDefect","trackDefectWith","updater","defect","tapDefect","forEachSequentialDiscard","defects","trackDuration","trackDurationWith","clockWith","clock","startTime","unsafeCurrentTimeNanos","endTime","duration","nanos","trackError","trackErrorWith","error","tapError","trackSuccess","trackSuccessWith","Date","now","zip","that","l","r","unsafeSnapshot","snapshot"],"sources":["../../../src/internal/metric.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.6.3";
1
+ let moduleVersion = "3.6.5";
2
2
  export const getCurrentVersion = () => moduleVersion;
3
3
  export const setCurrentVersion = version => {
4
4
  moduleVersion = version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect",
3
- "version": "3.6.3",
3
+ "version": "3.6.5",
4
4
  "description": "The missing standard library for TypeScript, for writing production-grade software.",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/Cache.ts CHANGED
@@ -22,6 +22,18 @@ export const CacheTypeId: unique symbol = internal.CacheTypeId
22
22
  */
23
23
  export type CacheTypeId = typeof CacheTypeId
24
24
 
25
+ /**
26
+ * @since 3.6.4
27
+ * @category symbols
28
+ */
29
+ export const ConsumerCacheTypeId: unique symbol = internal.ConsumerCacheTypeId
30
+
31
+ /**
32
+ * @since 3.6.4
33
+ * @category symbols
34
+ */
35
+ export type ConsumerCacheTypeId = typeof ConsumerCacheTypeId
36
+
25
37
  /**
26
38
  * A `Cache` is defined in terms of a lookup function that, given a key of
27
39
  * type `Key`, can either fail with an error of type `Error` or succeed with a
@@ -43,7 +55,9 @@ export type CacheTypeId = typeof CacheTypeId
43
55
  * @since 2.0.0
44
56
  * @category models
45
57
  */
46
- export interface Cache<in out Key, out Value, out Error = never> extends ConsumerCache<Key, Value, Error> {
58
+ export interface Cache<in out Key, in out Value, out Error = never>
59
+ extends ConsumerCache<Key, Value, Error>, Cache.Variance<Key, Value, Error>
60
+ {
47
61
  /**
48
62
  * Retrieves the value associated with the specified key if it exists.
49
63
  * Otherwise computes the value with the lookup function, puts it in the
@@ -83,7 +97,9 @@ export interface Cache<in out Key, out Value, out Error = never> extends Consume
83
97
  * @since 2.0.0
84
98
  * @category models
85
99
  */
86
- export interface ConsumerCache<in out Key, out Value, out Error = never> extends Cache.Variance<Key, Value, Error> {
100
+ export interface ConsumerCache<in out Key, out Value, out Error = never>
101
+ extends Cache.ConsumerVariance<Key, Value, Error>
102
+ {
87
103
  /**
88
104
  * Retrieves the value associated with the specified key if it exists.
89
105
  * Otherwise returns `Option.none`.
@@ -156,8 +172,19 @@ export declare namespace Cache {
156
172
  * @since 2.0.0
157
173
  * @category models
158
174
  */
159
- export interface Variance<in out Key, out Value, out Error> {
175
+ export interface Variance<in out Key, in out Value, out Error> {
160
176
  readonly [CacheTypeId]: {
177
+ readonly _Key: Types.Invariant<Key>
178
+ readonly _Error: Types.Covariant<Error>
179
+ readonly _Value: Types.Invariant<Value>
180
+ }
181
+ }
182
+ /**
183
+ * @since 3.6.4
184
+ * @category models
185
+ */
186
+ export interface ConsumerVariance<in out Key, out Value, out Error> {
187
+ readonly [ConsumerCacheTypeId]: {
161
188
  readonly _Key: Types.Invariant<Key>
162
189
  readonly _Error: Types.Covariant<Error>
163
190
  readonly _Value: Types.Covariant<Value>
package/src/DateTime.ts CHANGED
@@ -562,7 +562,7 @@ export const makeZonedFromString = (input: string): Option.Option<Zoned> => {
562
562
  const match = zonedStringRegex.exec(input)
563
563
  if (match === null) {
564
564
  const offset = parseOffset(input)
565
- return offset ? makeZoned(input, { timeZone: offset }) : Option.none()
565
+ return offset !== null ? makeZoned(input, { timeZone: offset }) : Option.none()
566
566
  }
567
567
  const [, isoString, timeZone] = match
568
568
  return makeZoned(isoString, { timeZone })
package/src/Metric.ts CHANGED
@@ -56,6 +56,7 @@ export interface Metric<in out Type, in In, out Out> extends Metric.Variance<Typ
56
56
  readonly keyType: Type
57
57
  unsafeUpdate(input: In, extraTags: ReadonlyArray<MetricLabel.MetricLabel>): void
58
58
  unsafeValue(extraTags: ReadonlyArray<MetricLabel.MetricLabel>): Out
59
+ unsafeModify(input: In, extraTags: ReadonlyArray<MetricLabel.MetricLabel>): void
59
60
  register(): this
60
61
  <A extends In, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
61
62
  }
@@ -68,7 +69,8 @@ export interface MetricApply {
68
69
  <Type, In, Out>(
69
70
  keyType: Type,
70
71
  unsafeUpdate: (input: In, extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => void,
71
- unsafeValue: (extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => Out
72
+ unsafeValue: (extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => Out,
73
+ unsafeModify: (input: In, extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => void
72
74
  ): Metric<Type, In, Out>
73
75
  }
74
76
 
@@ -306,20 +308,21 @@ export const histogram: (
306
308
 
307
309
  /**
308
310
  * @since 2.0.0
309
- * @category aspects
311
+ * @category combinators
310
312
  */
311
- export const increment: (self: Metric.Counter<number> | Metric.Counter<bigint>) => Effect.Effect<void> =
312
- internal.increment
313
+ export const increment: (
314
+ self: Metric.Counter<number> | Metric.Counter<bigint> | Metric.Gauge<number> | Metric.Gauge<bigint>
315
+ ) => Effect.Effect<void> = internal.increment
313
316
 
314
317
  /**
315
318
  * @since 2.0.0
316
- * @category aspects
319
+ * @category combinators
317
320
  */
318
321
  export const incrementBy: {
319
- (amount: number): (self: Metric.Counter<number>) => Effect.Effect<void>
320
- (amount: bigint): (self: Metric.Counter<bigint>) => Effect.Effect<void>
321
- (self: Metric.Counter<number>, amount: number): Effect.Effect<void>
322
- (self: Metric.Counter<bigint>, amount: bigint): Effect.Effect<void>
322
+ (amount: number): (self: Metric.Counter<number> | Metric.Counter<number>) => Effect.Effect<void>
323
+ (amount: bigint): (self: Metric.Counter<bigint> | Metric.Gauge<bigint>) => Effect.Effect<void>
324
+ (self: Metric.Counter<number> | Metric.Gauge<number>, amount: number): Effect.Effect<void>
325
+ (self: Metric.Counter<bigint> | Metric.Gauge<bigint>, amount: bigint): Effect.Effect<void>
323
326
  } = internal.incrementBy
324
327
 
325
328
  /**
@@ -344,6 +347,19 @@ export const mapType: {
344
347
  <Type, In, Out, Type2>(self: Metric<Type, In, Out>, f: (type: Type) => Type2): Metric<Type2, In, Out>
345
348
  } = internal.mapType
346
349
 
350
+ /**
351
+ * Modifies the metric with the specified update message. For example, if the
352
+ * metric were a gauge, the update would increment the method by the provided
353
+ * amount.
354
+ *
355
+ * @since 3.6.5
356
+ * @category utils
357
+ */
358
+ export const modify: {
359
+ <In>(input: In): <Type, Out>(self: Metric<Type, In, Out>) => Effect.Effect<void>
360
+ <Type, In, Out>(self: Metric<Type, In, Out>, input: In): Effect.Effect<void>
361
+ } = internal.modify
362
+
347
363
  /**
348
364
  * @since 2.0.0
349
365
  * @category aspects
package/src/MetricHook.ts CHANGED
@@ -27,6 +27,7 @@ export type MetricHookTypeId = typeof MetricHookTypeId
27
27
  export interface MetricHook<in In, out Out> extends MetricHook.Variance<In, Out>, Pipeable {
28
28
  get(): Out
29
29
  update(input: In): void
30
+ modify(input: In): void
30
31
  }
31
32
 
32
33
  /**
@@ -94,6 +95,7 @@ export declare namespace MetricHook {
94
95
  export const make: <In, Out>(options: {
95
96
  readonly get: LazyArg<Out>
96
97
  readonly update: (input: In) => void
98
+ readonly modify: (input: In) => void
97
99
  }) => MetricHook<In, Out> = internal.make
98
100
 
99
101
  /**
@@ -138,3 +140,12 @@ export const onUpdate: {
138
140
  <In, Out>(f: (input: In) => void): (self: MetricHook<In, Out>) => MetricHook<In, Out>
139
141
  <In, Out>(self: MetricHook<In, Out>, f: (input: In) => void): MetricHook<In, Out>
140
142
  } = internal.onUpdate
143
+
144
+ /**
145
+ * @since 3.6.5
146
+ * @category utils
147
+ */
148
+ export const onModify: {
149
+ <In, Out>(f: (input: In) => void): (self: MetricHook<In, Out>) => MetricHook<In, Out>
150
+ <In, Out>(self: MetricHook<In, Out>, f: (input: In) => void): MetricHook<In, Out>
151
+ } = internal.onModify
package/src/Pipeable.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  * @category models
8
8
  */
9
9
  export interface Pipeable {
10
+ pipe<A>(this: A): A
10
11
  pipe<A, B>(this: A, ab: (_: A) => B): B
11
12
  pipe<A, B, C>(this: A, ab: (_: A) => B, bc: (_: B) => C): C
12
13
  pipe<A, B, C, D>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D
@@ -289,6 +290,8 @@ export interface Pipeable {
289
290
  */
290
291
  export const pipeArguments = <A>(self: A, args: IArguments): unknown => {
291
292
  switch (args.length) {
293
+ case 0:
294
+ return self
292
295
  case 1:
293
296
  return args[0](self)
294
297
  case 2:
package/src/Scheduler.ts CHANGED
@@ -37,27 +37,22 @@ export class PriorityBuckets<in out T = Task> {
37
37
  * @since 2.0.0
38
38
  */
39
39
  scheduleTask(task: T, priority: number) {
40
+ const length = this.buckets.length
40
41
  let bucket: [number, Array<T>] | undefined = undefined
41
- let index: number
42
- for (index = 0; index < this.buckets.length; index++) {
42
+ let index = 0
43
+ for (; index < length; index++) {
43
44
  if (this.buckets[index][0] <= priority) {
44
45
  bucket = this.buckets[index]
45
46
  } else {
46
47
  break
47
48
  }
48
49
  }
49
- if (bucket) {
50
+ if (bucket && bucket[0] === priority) {
50
51
  bucket[1].push(task)
52
+ } else if (index === length) {
53
+ this.buckets.push([priority, [task]])
51
54
  } else {
52
- const newBuckets: Array<[number, Array<T>]> = []
53
- for (let i = 0; i < index; i++) {
54
- newBuckets.push(this.buckets[i])
55
- }
56
- newBuckets.push([priority, [task]])
57
- for (let i = index; i < this.buckets.length; i++) {
58
- newBuckets.push(this.buckets[i])
59
- }
60
- this.buckets = newBuckets
55
+ this.buckets.splice(index, 0, [priority, [task]])
61
56
  }
62
57
  }
63
58
  }
@@ -270,6 +270,23 @@ export const CacheTypeId: Cache.CacheTypeId = Symbol.for(
270
270
  ) as Cache.CacheTypeId
271
271
 
272
272
  const cacheVariance = {
273
+ /* c8 ignore next */
274
+ _Key: (_: any) => _,
275
+ /* c8 ignore next */
276
+ _Error: (_: never) => _,
277
+ /* c8 ignore next */
278
+ _Value: (_: any) => _
279
+ }
280
+
281
+ /** @internal */
282
+ const ConsumerCacheSymbolKey = "effect/ConsumerCache"
283
+
284
+ /** @internal */
285
+ export const ConsumerCacheTypeId: Cache.ConsumerCacheTypeId = Symbol.for(
286
+ ConsumerCacheSymbolKey
287
+ ) as Cache.ConsumerCacheTypeId
288
+
289
+ const consumerCacheVariance = {
273
290
  /* c8 ignore next */
274
291
  _Key: (_: any) => _,
275
292
  /* c8 ignore next */
@@ -294,6 +311,7 @@ export const makeEntryStats = (loadedMillis: number): Cache.EntryStats => ({
294
311
 
295
312
  class CacheImpl<in out Key, in out Value, in out Error> implements Cache.Cache<Key, Value, Error> {
296
313
  readonly [CacheTypeId] = cacheVariance
314
+ readonly [ConsumerCacheTypeId] = consumerCacheVariance
297
315
  readonly cacheState: CacheState<Key, Value, Error>
298
316
  constructor(
299
317
  readonly capacity: number,
@@ -1200,12 +1200,20 @@ export const patchFiberRefs = (patch: FiberRefsPatch.FiberRefsPatch): Effect.Eff
1200
1200
  export const promise = <A>(evaluate: (signal: AbortSignal) => PromiseLike<A>): Effect.Effect<A> =>
1201
1201
  evaluate.length >= 1
1202
1202
  ? core.async((resolve, signal) => {
1203
- evaluate(signal)
1204
- .then((a) => resolve(core.exitSucceed(a)), (e) => resolve(core.exitDie(e)))
1203
+ try {
1204
+ evaluate(signal)
1205
+ .then((a) => resolve(core.exitSucceed(a)), (e) => resolve(core.exitDie(e)))
1206
+ } catch (e) {
1207
+ resolve(core.exitDie(e))
1208
+ }
1205
1209
  })
1206
1210
  : core.async((resolve) => {
1207
- ;(evaluate as LazyArg<PromiseLike<A>>)()
1208
- .then((a) => resolve(core.exitSucceed(a)), (e) => resolve(core.exitDie(e)))
1211
+ try {
1212
+ ;(evaluate as LazyArg<PromiseLike<A>>)()
1213
+ .then((a) => resolve(core.exitSucceed(a)), (e) => resolve(core.exitDie(e)))
1214
+ } catch (e) {
1215
+ resolve(core.exitDie(e))
1216
+ }
1209
1217
  })
1210
1218
 
1211
1219
  /* @internal */
@@ -1668,14 +1676,12 @@ export const tryPromise: {
1668
1676
  return core.async((resolve, signal) => {
1669
1677
  try {
1670
1678
  evaluate(signal)
1671
- .then((a) => resolve(core.exitSucceed(a)), (e) =>
1672
- resolve(core.fail(
1673
- catcher ? catcher(e) : new core.UnknownException(e)
1674
- )))
1679
+ .then(
1680
+ (a) => resolve(core.exitSucceed(a)),
1681
+ (e) => resolve(catcher ? core.failSync(() => catcher(e)) : core.fail(new core.UnknownException(e)))
1682
+ )
1675
1683
  } catch (e) {
1676
- resolve(core.fail(
1677
- catcher ? catcher(e) : new core.UnknownException(e)
1678
- ))
1684
+ resolve(catcher ? core.failSync(() => catcher(e)) : core.fail(new core.UnknownException(e)))
1679
1685
  }
1680
1686
  })
1681
1687
  }
@@ -1683,14 +1689,12 @@ export const tryPromise: {
1683
1689
  return core.async((resolve) => {
1684
1690
  try {
1685
1691
  evaluate()
1686
- .then((a) => resolve(core.exitSucceed(a)), (e) =>
1687
- resolve(core.fail(
1688
- catcher ? catcher(e) : new core.UnknownException(e)
1689
- )))
1692
+ .then(
1693
+ (a) => resolve(core.exitSucceed(a)),
1694
+ (e) => resolve(catcher ? core.failSync(() => catcher(e)) : core.fail(new core.UnknownException(e)))
1695
+ )
1690
1696
  } catch (e) {
1691
- resolve(core.fail(
1692
- catcher ? catcher(e) : new core.UnknownException(e)
1693
- ))
1697
+ resolve(catcher ? core.failSync(() => catcher(e)) : core.fail(new core.UnknownException(e)))
1694
1698
  }
1695
1699
  })
1696
1700
  }
@@ -30,6 +30,7 @@ export const make = <In, Out>(
30
30
  options: {
31
31
  readonly get: LazyArg<Out>
32
32
  readonly update: (input: In) => void
33
+ readonly modify: (input: In) => void
33
34
  }
34
35
  ): MetricHook.MetricHook<In, Out> => ({
35
36
  [MetricHookTypeId]: metricHookVariance,
@@ -39,6 +40,23 @@ export const make = <In, Out>(
39
40
  ...options
40
41
  })
41
42
 
43
+ /** @internal */
44
+ export const onModify = dual<
45
+ <In, Out>(f: (input: In) => void) => (self: MetricHook.MetricHook<In, Out>) => MetricHook.MetricHook<In, Out>,
46
+ <In, Out>(self: MetricHook.MetricHook<In, Out>, f: (input: In) => void) => MetricHook.MetricHook<In, Out>
47
+ >(2, (self, f) => ({
48
+ [MetricHookTypeId]: metricHookVariance,
49
+ pipe() {
50
+ return pipeArguments(this, arguments)
51
+ },
52
+ get: self.get,
53
+ update: self.update,
54
+ modify: (input) => {
55
+ self.modify(input)
56
+ return f(input)
57
+ }
58
+ }))
59
+
42
60
  /** @internal */
43
61
  export const onUpdate = dual<
44
62
  <In, Out>(f: (input: In) => void) => (self: MetricHook.MetricHook<In, Out>) => MetricHook.MetricHook<In, Out>,
@@ -52,7 +70,8 @@ export const onUpdate = dual<
52
70
  update: (input) => {
53
71
  self.update(input)
54
72
  return f(input)
55
- }
73
+ },
74
+ modify: self.modify
56
75
  }))
57
76
 
58
77
  const bigint0 = BigInt(0)
@@ -67,13 +86,15 @@ export const counter = <A extends (number | bigint)>(
67
86
  ? (value: A) => value >= bigint0
68
87
  : (value: A) => value >= 0
69
88
  : (_value: A) => true
89
+ const update = (value: A) => {
90
+ if (canUpdate(value)) {
91
+ sum = (sum as any) + value
92
+ }
93
+ }
70
94
  return make({
71
95
  get: () => metricState.counter(sum as number) as unknown as MetricState.MetricState.Counter<A>,
72
- update: (value) => {
73
- if (canUpdate(value)) {
74
- sum = (sum as any) + value
75
- }
76
- }
96
+ update,
97
+ modify: update
77
98
  })
78
99
  }
79
100
 
@@ -89,7 +110,8 @@ export const frequency = (key: MetricKey.MetricKey.Frequency): MetricHook.Metric
89
110
  }
90
111
  return make({
91
112
  get: () => metricState.frequency(values),
92
- update
113
+ update,
114
+ modify: update
93
115
  })
94
116
  }
95
117
 
@@ -106,6 +128,9 @@ export const gauge: {
106
128
  get: () => metricState.gauge(value as number) as unknown as MetricState.MetricState.Gauge<A>,
107
129
  update: (v) => {
108
130
  value = v
131
+ },
132
+ modify: (v) => {
133
+ value = (value as any) + v
109
134
  }
110
135
  })
111
136
  }
@@ -182,7 +207,8 @@ export const histogram = (key: MetricKey.MetricKey.Histogram): MetricHook.Metric
182
207
  max,
183
208
  sum
184
209
  }),
185
- update
210
+ update,
211
+ modify: update
186
212
  })
187
213
  }
188
214
 
@@ -258,7 +284,8 @@ export const summary = (key: MetricKey.MetricKey.Summary): MetricHook.MetricHook
258
284
  max,
259
285
  sum
260
286
  }),
261
- update: ([value, timestamp]) => observe(value, timestamp)
287
+ update: ([value, timestamp]) => observe(value, timestamp),
288
+ modify: ([value, timestamp]) => observe(value, timestamp)
262
289
  })
263
290
  }
264
291