@intentic/base 1.224.0 → 1.225.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The runtime primitives every tier shares: the `when` condition language, disposal, and the async schedulers.
|
|
4
4
|
|
|
5
|
-
Nothing in here knows what this product is. That is the point
|
|
5
|
+
Nothing in here knows what this product is. That is the point: each of the three modules replaced a decision
|
|
6
6
|
that had been made independently, and differently, in the daemon and in the web app, where the copies could
|
|
7
7
|
only ever drift apart. There is no barrel export: a consumer imports the module it needs
|
|
8
8
|
(`@intentic/base/when`), because these three have nothing to do with each other and a package that offers them
|
|
@@ -10,14 +10,14 @@ as one thing invites being treated as a junk drawer.
|
|
|
10
10
|
|
|
11
11
|
## Responsibilities
|
|
12
12
|
|
|
13
|
-
- **`when
|
|
13
|
+
- **`when`**: parse and evaluate a condition written as a string, against a bag of named values the caller
|
|
14
14
|
supplies. This is what lets a condition live in a JSON manifest an extension ships, and be evaluated the same
|
|
15
15
|
way on both sides of the wire. Deliberately not a general expression language: no arithmetic, no calls, no
|
|
16
16
|
reaching past the context object, because these strings arrive from installed extensions.
|
|
17
|
-
- **`lifecycle
|
|
17
|
+
- **`lifecycle`**: teardown as structure rather than as a list somebody maintains. A store is registered into
|
|
18
18
|
where things are created and disposed once; it keeps going past a member that throws and reports the failures
|
|
19
19
|
together, so one bad stop cannot strand the ports and child processes queued behind it.
|
|
20
|
-
- **`async
|
|
20
|
+
- **`async`**: the four shapes of "don't do that again yet", named so the choice between them is visible:
|
|
21
21
|
`Delayer` restarts its clock on every call, `Coalescer` opens a window on the first call and lets later ones
|
|
22
22
|
join it, `SingleFlight` shares one run per key among concurrent callers, and `retry` is the loop with the
|
|
23
23
|
delay in it.
|
|
@@ -44,9 +44,9 @@ when nobody needs it any more.
|
|
|
44
44
|
|
|
45
45
|
## Key files
|
|
46
46
|
|
|
47
|
-
- [src/when.ts](src/when.ts)
|
|
48
|
-
- [src/lifecycle.ts](src/lifecycle.ts)
|
|
49
|
-
- [src/async.ts](src/async.ts)
|
|
50
|
-
- [src/when.test.ts](src/when.test.ts)
|
|
47
|
+
- [src/when.ts](src/when.ts): the grammar, the parser, and what a condition means against a context.
|
|
48
|
+
- [src/lifecycle.ts](src/lifecycle.ts): `DisposableStore` and the two things built on it.
|
|
49
|
+
- [src/async.ts](src/async.ts): the schedulers, each with the case that made it a separate name.
|
|
50
|
+
- [src/when.test.ts](src/when.test.ts), the evaluation rules that are decisions rather than syntax: an absent
|
|
51
51
|
key is false, ordering refuses anything but numbers, comparison crosses the type boundary by string form.
|
|
52
|
-
- [src/async.test.ts](src/async.test.ts)
|
|
52
|
+
- [src/async.test.ts](src/async.test.ts): the Delayer/Coalescer distinction pinned as behaviour.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/base",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Runtime primitives every tier shares
|
|
3
|
+
"version": "1.225.0",
|
|
4
|
+
"description": "Runtime primitives every tier shares, when-expressions, disposal, and the async schedulers",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|