@valancex/valance 0.4.0 → 0.5.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 +4 -4
- package/dist/index.d.ts +39 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -1
- package/dist/web-manifest.d.ts +74 -0
- package/dist/web-manifest.d.ts.map +1 -0
- package/dist/web-manifest.js +151 -0
- package/dist/web-manifest.js.map +1 -0
- package/dist/web-payload.d.ts +19 -0
- package/dist/web-payload.d.ts.map +1 -0
- package/dist/web-payload.js +15 -0
- package/dist/web-payload.js.map +1 -0
- package/dist/web.d.ts +34 -4
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +79 -6
- package/dist/web.js.map +1 -1
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ import { renderToHtml } from "@valancex/valance/web/server";
|
|
|
13
13
|
- **Install** (a strict package manager resolves only what you declare, so declare the application-level and build-time packages yourself):
|
|
14
14
|
|
|
15
15
|
```console
|
|
16
|
-
$ pnpm add @valancex/valance @valancex/nexus@^0.10.3 @valancex/mesh-runtime@^0.9.0 @valancex/port-web@^0.
|
|
16
|
+
$ pnpm add @valancex/valance @valancex/nexus@^0.10.3 @valancex/mesh-runtime@^0.9.0 @valancex/port-web@^0.3.0 effect@^3.10.0
|
|
17
17
|
$ pnpm add -D @valancex/mesh-compiler@^0.9.0
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -22,15 +22,15 @@ import { renderToHtml } from "@valancex/valance/web/server";
|
|
|
22
22
|
| `@valancex/valance` | the release you target | this package |
|
|
23
23
|
| `@valancex/nexus` | `^0.10.3` | **application-level**: your commands, state handles and capabilities are written against it. Also this package's own dependency, so use the same range and one copy is shared |
|
|
24
24
|
| `@valancex/mesh-runtime` | `^0.8.0 \|\| ^0.9.0` | peer: renders programs at run time (the one runtime: NEXUS 0.10.3 shares it) |
|
|
25
|
-
| `@valancex/port-web` | `^0.
|
|
25
|
+
| `@valancex/port-web` | `^0.3.0` | optional peer: needed for `./web` and `./web/server` |
|
|
26
26
|
| `effect` | `^3.10.0` | peer |
|
|
27
27
|
| `@valancex/mesh-compiler` | `^0.9.0` | **build time only** (devDependency): compiles MPRX to the `program` each view takes (`compileProgram`) |
|
|
28
28
|
|
|
29
|
-
- **Async work and startup:** a command can wait; once admitted it belongs to the application, and closing the application cancels it. Loading and failure are ordinary state. The optional `start` field of `define` names a command the application runs once when it starts (added in 0.4.0). See [Async work](https://github.com/ValanceX/Valance/blob/main/docs/learn/async-work.md) and [Startup work](https://github.com/ValanceX/Valance/blob/main/docs/learn/startup-work.md).
|
|
29
|
+
- **Async work and startup:** a command can wait; once admitted it belongs to the application, and closing the application cancels it. Loading and failure are ordinary state; `command(state).waiting` writes a Promise-shaped one without NEXUS or Effect (added in 0.5.0). The optional `start` field of `define` names a command the application runs once when it starts (added in 0.4.0). See [Async work](https://github.com/ValanceX/Valance/blob/main/docs/learn/async-work.md) and [Startup work](https://github.com/ValanceX/Valance/blob/main/docs/learn/startup-work.md).
|
|
30
30
|
- **Lifetimes:** the application, each mount and each history live in separate, caller-owned `Scope`s; closing one never closes another. Closing the application's `Scope` ends commits (state stays readable); mounts then end inert.
|
|
31
31
|
- **Presentation:** a mount presents committed state as a latest-state consumer: it may skip superseded intermediate states and converges on the latest. Same view is an `update`, another view a `draw`; `hydrate` takes over server markup and then behaves like `mount`. A mount's failure is local to it; recovery is a fresh mount.
|
|
32
32
|
- **History:** `Web.history` follows committed state and runs the application's own navigate command on popstate; it owns its listener's `Scope` only.
|
|
33
33
|
- **Status:** pre-1.0. `./internal` is the composition protocol for binding authors and tests, unstable by design.
|
|
34
|
-
- **The contract:** [`docs/V1_CONTRACT.md`](https://github.com/ValanceX/Valance/blob/main/docs/V1_CONTRACT.md) states what VALANCE guarantees, what the caller owns and what is not guaranteed. Engineering constraints: [`docs/CONSTRAINTS.md`](https://github.com/ValanceX/Valance/blob/main/docs/CONSTRAINTS.md). Historical investigation record: [`docs/FINDINGS.md`](https://github.com/ValanceX/Valance/blob/main/docs/FINDINGS.md). Release notes: [`docs/releases/v0.
|
|
34
|
+
- **The contract:** [`docs/V1_CONTRACT.md`](https://github.com/ValanceX/Valance/blob/main/docs/V1_CONTRACT.md) states what VALANCE guarantees, what the caller owns and what is not guaranteed. Engineering constraints: [`docs/CONSTRAINTS.md`](https://github.com/ValanceX/Valance/blob/main/docs/CONSTRAINTS.md). Historical investigation record: [`docs/FINDINGS.md`](https://github.com/ValanceX/Valance/blob/main/docs/FINDINGS.md). Release notes: [`docs/releases/v0.5.md`](https://github.com/ValanceX/Valance/blob/main/docs/releases/v0.5.md) (current), [`v0.4.md`](https://github.com/ValanceX/Valance/blob/main/docs/releases/v0.4.md), [`v0.3.md`](https://github.com/ValanceX/Valance/blob/main/docs/releases/v0.3.md), [`v0.2.1.md`](https://github.com/ValanceX/Valance/blob/main/docs/releases/v0.2.1.md), [`v0.2.md`](https://github.com/ValanceX/Valance/blob/main/docs/releases/v0.2.md), [`v0.1.md`](https://github.com/ValanceX/Valance/blob/main/docs/releases/v0.1.md).
|
|
35
35
|
|
|
36
36
|
MIT licensed.
|
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,10 @@ import { type DispatchExit } from "./internal.js";
|
|
|
24
24
|
import { Effect, Exit, Schema, Scope } from "effect";
|
|
25
25
|
/** What a command binding may require: only what the NEXUS application runtime itself provides. */
|
|
26
26
|
export type Ambient = Nexus.Capability.EnvironmentShape | Nexus.Event.EventBusShape;
|
|
27
|
+
/** A compiled view description: what `compileProgram` returns as `program`, and what a view's `program` takes. Opaque; VALANCE never looks inside it. */
|
|
28
|
+
export type Program = Nexus.Mesh.Program;
|
|
29
|
+
/** The state as `commands` receives it, for typing a `commands` function written apart from `define` (for example, to derive the manifest from it). */
|
|
30
|
+
export type StateHandle<S> = Nexus.State.StateHandle<S>;
|
|
27
31
|
/** One MESH program the application can show, and the manifest-shaped values it is rendered from. */
|
|
28
32
|
export interface View<S> {
|
|
29
33
|
/** MESH program: templates compiled at build time, and the manifest's text. */
|
|
@@ -90,6 +94,40 @@ type RequirementOf<V> = V extends Nexus.Command.Command<any, any, any, infer Req
|
|
|
90
94
|
export declare const define: <S, T extends CommandTable<any, Ambient>, V extends string>(definition: Omit<ApplicationDefinition<S, never, never, V>, "commands"> & {
|
|
91
95
|
readonly commands: (state: Nexus.State.StateHandle<S>) => T;
|
|
92
96
|
}) => ApplicationDefinition<S, ErrorOf<T[keyof T]> | Nexus.Command.CommandValidationError, Extract<RequirementOf<T[keyof T]>, Ambient>, V>;
|
|
97
|
+
/** How a waiting command's work ended: the value it produced, or what its Promise rejected with, as received. */
|
|
98
|
+
export type Outcome<A> = {
|
|
99
|
+
readonly ok: true;
|
|
100
|
+
readonly value: A;
|
|
101
|
+
} | {
|
|
102
|
+
readonly ok: false;
|
|
103
|
+
readonly error: unknown;
|
|
104
|
+
};
|
|
105
|
+
/** What a command that waits says. Every function is a plain function of the state; none may throw (a throw is a defect, as in any command). */
|
|
106
|
+
export interface Waiting<S, I, A> {
|
|
107
|
+
/** The state when the run starts, before the work: typically "loading". Optional: the state may already say so (start-time work). */
|
|
108
|
+
readonly begin?: (input: I, current: S) => S;
|
|
109
|
+
/** The work: the only asynchronous thing. `signal` aborts when the run is interrupted (the application closes). Its result, or rejection, reaches `settle`. */
|
|
110
|
+
readonly work: (input: I, signal: AbortSignal) => Promise<A>;
|
|
111
|
+
/**
|
|
112
|
+
* Is the result still relevant to the state as it is NOW? Asked when the work ends, in the same step as the commit; false and nothing is committed. **Required**, because a
|
|
113
|
+
* result that no longer fits the application must not land silently. This is relevance to the application's state; it is separate from, and in addition to, a newer run of this
|
|
114
|
+
* same command superseding an older one, which needs no code.
|
|
115
|
+
*/
|
|
116
|
+
readonly wanted: (input: I, current: S) => boolean;
|
|
117
|
+
/** The state once the work has ended and the result is wanted: success and failure alike are ordinary state. */
|
|
118
|
+
readonly settle: (outcome: Outcome<A>, input: I, current: S) => S;
|
|
119
|
+
}
|
|
120
|
+
/** What `command(state)` returns: the pure-transition forms, and `waiting`. */
|
|
121
|
+
export interface CommandMaker<S> {
|
|
122
|
+
(transition: (current: S) => S): Nexus.Command.Command<{}, void, never, never>;
|
|
123
|
+
<I>(input: Schema.Schema<I>, transition: (input: I, current: S) => S): Nexus.Command.Command<I, void, never, never>;
|
|
124
|
+
/**
|
|
125
|
+
* A command that waits. Once admitted it belongs to the application until it settles or is interrupted; closing the application aborts `work`'s signal and nothing commits afterwards.
|
|
126
|
+
* **A newer run of the same command supersedes an older one**: the older run is NOT cancelled (its work continues, and its caller sees it complete) but its result is discarded,
|
|
127
|
+
* success or failure. Whether a result is still wanted by the state is `wanted`'s question, answered per run.
|
|
128
|
+
*/
|
|
129
|
+
waiting<I, A>(input: Schema.Schema<I>, spec: Waiting<S, I, A>): Nexus.Command.Command<I, void, never, never>;
|
|
130
|
+
}
|
|
93
131
|
/**
|
|
94
132
|
* Binds the application's state, and returns the function that makes commands whose whole behavior is a pure transition of it:
|
|
95
133
|
* `transition` receives the validated input and the current state, and returns the next state. The input is validated by `input`
|
|
@@ -111,10 +149,7 @@ export declare const define: <S, T extends CommandTable<any, Ambient>, V extends
|
|
|
111
149
|
* transition together cannot do this: TypeScript then types the returned literals from a type parameter of that same call, and widens them.)
|
|
112
150
|
* A returned object is not checked for excess properties, the same as returning it from `state.update`.
|
|
113
151
|
*/
|
|
114
|
-
export declare const command: <S>(state: Nexus.State.StateHandle<S>) =>
|
|
115
|
-
(transition: (current: S) => S): Nexus.Command.Command<{}, void, never, never>;
|
|
116
|
-
<I>(input: Schema.Schema<I>, transition: (input: I, current: S) => S): Nexus.Command.Command<I, void, never, never>;
|
|
117
|
-
};
|
|
152
|
+
export declare const command: <S>(state: Nexus.State.StateHandle<S>) => CommandMaker<S>;
|
|
118
153
|
/**
|
|
119
154
|
* An entry's behavior: it runs the command `run`, with the input `input` makes from the entry's arguments, as plain values in order (an absent
|
|
120
155
|
* argument is `undefined`). Without `input` the command is given `{}`, the input of a command that takes none. `input`'s result is
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAiB,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGnG,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { declaredEvents } from "@valancex/mesh-runtime";
|
|
2
2
|
import * as Nexus from "@valancex/nexus";
|
|
3
|
-
import { handleOf, runningOf } from "./internal.js";
|
|
3
|
+
import { handleOf, INPUT_KEY, runningOf } from "./internal.js";
|
|
4
4
|
import { Deferred, Effect, Exit, Fiber, Layer, Schema, Stream } from "effect";
|
|
5
5
|
/**
|
|
6
6
|
* The definition, typed. An application is data: defining one starts nothing. `E` is the union of every failure in the command table (each command may fail
|
|
@@ -11,6 +11,7 @@ import { Deferred, Effect, Exit, Fiber, Layer, Schema, Stream } from "effect";
|
|
|
11
11
|
export const define = (definition) => definition;
|
|
12
12
|
/** The diagnostic id of a command made by `command`: it has no author-chosen id, and the id only decorates `CommandValidationError.command`. */
|
|
13
13
|
const TRANSITION_COMMAND = "valance.command";
|
|
14
|
+
const WAITING_COMMAND = "valance.waiting";
|
|
14
15
|
/** The input of a command that takes none. */
|
|
15
16
|
const NO_INPUT = Schema.Struct({});
|
|
16
17
|
/**
|
|
@@ -37,9 +38,25 @@ const NO_INPUT = Schema.Struct({});
|
|
|
37
38
|
export const command = (state) => {
|
|
38
39
|
const make = (input, transition) => Nexus.Command.define(TRANSITION_COMMAND, input, (decoded) => Effect.asVoid(state.update((current) => Effect.sync(() => transition(decoded, current)))));
|
|
39
40
|
// The one-argument form is the two-argument form with the empty input: the same `Command`, validated, admitted and run in the same way.
|
|
40
|
-
|
|
41
|
+
const transition = ((a, b) => b === undefined
|
|
41
42
|
? make(NO_INPUT, (_input, current) => a(current))
|
|
42
43
|
: make(a, b));
|
|
44
|
+
return Object.assign(transition, {
|
|
45
|
+
waiting: (input, spec) => {
|
|
46
|
+
let latest = 0; // this command's newest run: created with the command, so there is one per started application
|
|
47
|
+
return Nexus.Command.define(WAITING_COMMAND, input, (decoded) => Effect.gen(function* () {
|
|
48
|
+
const mine = ++latest;
|
|
49
|
+
if (spec.begin !== undefined) {
|
|
50
|
+
yield* state.update((current) => Effect.sync(() => spec.begin(decoded, current)));
|
|
51
|
+
}
|
|
52
|
+
// A Promise's rejection is `unknown` and is passed to `settle` exactly as received. Interruption (the application closing, or the caller's) is not a failure: it ends the
|
|
53
|
+
// run here, aborts `signal`, and `settle` never runs.
|
|
54
|
+
const outcome = yield* Effect.tryPromise({ try: (signal) => spec.work(decoded, signal), catch: (error) => error }).pipe(Effect.map((value) => ({ ok: true, value })), Effect.catchAll((error) => Effect.succeed({ ok: false, error })));
|
|
55
|
+
// Both questions are asked in the same atomic step as the commit: is this still the newest run of this command, and is the result still wanted by the state as it is now.
|
|
56
|
+
yield* state.update((current) => Effect.sync(() => mine === latest && spec.wanted(decoded, current) ? spec.settle(outcome, decoded, current) : current));
|
|
57
|
+
}).pipe(Effect.asVoid));
|
|
58
|
+
},
|
|
59
|
+
});
|
|
43
60
|
};
|
|
44
61
|
/** The field names of a command's struct input, in order; `undefined` when the input is not a struct. */
|
|
45
62
|
const fieldsOf = (schema) => {
|
|
@@ -54,6 +71,12 @@ const bareBinding = (command) => {
|
|
|
54
71
|
const fields = fieldsOf(command.input);
|
|
55
72
|
return entry(command, (...values) => fields === undefined ? values[0] : Object.fromEntries(fields.map((field, index) => [field, values[index]])));
|
|
56
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* A bare command bound to receive its input WHOLE, as one argument: what history supplies when its `navigate` names a bare command. The navigation fact `stateOf` reads from a
|
|
76
|
+
* URL is not an event's arguments but the command's input, so the positional rule of `bareBinding` (a struct takes its arguments as fields, in order) does not apply to it. The
|
|
77
|
+
* input is validated by the command's schema as always.
|
|
78
|
+
*/
|
|
79
|
+
const wholeBinding = (command) => entry(command, (...values) => values[0]);
|
|
57
80
|
/** What an entry's argument is to the application: the value itself, or `undefined` when the argument is absent. */
|
|
58
81
|
const plain = (argument) => "value" in argument ? argument.value : undefined;
|
|
59
82
|
/**
|
|
@@ -115,6 +138,11 @@ export const start = (app, options = {}) => Effect.gen(function* () {
|
|
|
115
138
|
for (const [name, binding] of named) {
|
|
116
139
|
commands[`app/${name}`] ??= binding;
|
|
117
140
|
}
|
|
141
|
+
for (const [key, value] of Object.entries(given)) {
|
|
142
|
+
if (!key.includes("/")) {
|
|
143
|
+
commands[INPUT_KEY(key)] ??= wholeBinding(value);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
118
146
|
for (const { event } of declared) {
|
|
119
147
|
const bound = named.get(event.command);
|
|
120
148
|
if (bound !== undefined) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -44,4 +44,6 @@ export interface Running<S, E> {
|
|
|
44
44
|
export declare const handleOf: <S, E>(running: Running<S, E>) => ApplicationHandle<S, E>;
|
|
45
45
|
/** The `Running` a handle fronts. For bindings (and tests): an application's caller never needs it. */
|
|
46
46
|
export declare const runningOf: <S, E>(handle: ApplicationHandle<S, E>) => Running<S, E>;
|
|
47
|
+
/** The registry key under which a bare command receives its input WHOLE (the navigation fact history reads from a URL). Reserved for history's `navigate`; not a key a MESH program declares or a caller needs. */
|
|
48
|
+
export declare const INPUT_KEY: (name: string) => string;
|
|
47
49
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AAE5H,2GAA2G;AAC3G,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5D,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnE,sQAAsQ;IACtQ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnE;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IAC9N,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,iHAAiH;IACjH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,0GAA0G;IAC1G,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;CAC1I;AAID,0HAA0H;AAC1H,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAM7E,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAQ7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AAE5H,2GAA2G;AAC3G,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5D,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnE,sQAAsQ;IACtQ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnE;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IAC9N,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,iHAAiH;IACjH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,0GAA0G;IAC1G,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;CAC1I;AAID,0HAA0H;AAC1H,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAM7E,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAQ7E,CAAC;AAEF,mNAAmN;AACnN,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAA8B,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -13,4 +13,6 @@ export const runningOf = (handle) => {
|
|
|
13
13
|
}
|
|
14
14
|
return running;
|
|
15
15
|
};
|
|
16
|
+
/** The registry key under which a bare command receives its input WHOLE (the navigation fact history reads from a URL). Reserved for history's `navigate`; not a key a MESH program declares or a caller needs. */
|
|
17
|
+
export const INPUT_KEY = (name) => `navigation/${name}`;
|
|
16
18
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AA8CA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAiC,CAAC;AAE9D,0HAA0H;AAC1H,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAO,OAAsB,EAA2B,EAAE;IAChF,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAExG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAA2C,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,uGAAuG;AACvG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,MAA+B,EAAiB,EAAE;IAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,OAAmC,CAAC;AAC7C,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AA8CA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAiC,CAAC;AAE9D,0HAA0H;AAC1H,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAO,OAAsB,EAA2B,EAAE;IAChF,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAExG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAA2C,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,uGAAuG;AACvG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,MAA+B,EAAiB,EAAE;IAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,OAAmC,CAAC;AAC7C,CAAC,CAAC;AAEF,mNAAmN;AACnN,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MESH component manifest, derived. A manifest says which tags a view's templates may use and what each takes, and what the view itself may read and run. All of that
|
|
3
|
+
* is already stated by the application:
|
|
4
|
+
*
|
|
5
|
+
* tags and their props and events the Web primitives table (PORT's realization of each tag), the same one the target is given
|
|
6
|
+
* what a view may read the view's scope Schema, which also types its `scope` function
|
|
7
|
+
* what a view may run the command table: each bare command's input Schema gives its parameters, in field order (the order `start` already binds arguments in)
|
|
8
|
+
*
|
|
9
|
+
* What is fixed plumbing and never written by anyone: the format version, the (empty) named types, the (empty) commands and scope of a primitive, and the two reserved
|
|
10
|
+
* structural tags, `mesh-if` and `mesh-each`.
|
|
11
|
+
*
|
|
12
|
+
* What is NOT derived, and why (each is an error here, not a silent default):
|
|
13
|
+
* - an exact `"component/name"` command key: `entry`'s adapter turns an event's arguments into the command's input with an opaque function, so the parameters a template
|
|
14
|
+
* passes cannot be known. Name the command by its bare name (arguments in field order), or write the manifest by hand.
|
|
15
|
+
* - the kind of an event's payload: a payload function does not say what it builds. Build the event with `Web.event(type, { kind, of })`.
|
|
16
|
+
* - an optional text prop: whether a prop must be written is not stated by its realization, so every prop is required except a boolean one (a boolean attribute is absent
|
|
17
|
+
* when false). To make a text prop optional, write the manifest by hand.
|
|
18
|
+
* Build time only; it imports nothing at run time and is pure.
|
|
19
|
+
*/
|
|
20
|
+
import type { WebPrimitives } from "@valancex/port-web";
|
|
21
|
+
import type * as Nexus from "@valancex/nexus";
|
|
22
|
+
import { Schema } from "effect";
|
|
23
|
+
export declare class ManifestError extends Error {
|
|
24
|
+
readonly path: string;
|
|
25
|
+
readonly _tag = "ManifestError";
|
|
26
|
+
constructor(path: string, reason: string);
|
|
27
|
+
}
|
|
28
|
+
/** A MESH type (manifest format 1). */
|
|
29
|
+
export type MeshType = {
|
|
30
|
+
readonly kind: "string" | "number" | "boolean" | "null" | "any";
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "list";
|
|
33
|
+
readonly element: MeshType;
|
|
34
|
+
} | {
|
|
35
|
+
readonly kind: "record";
|
|
36
|
+
readonly fields: Readonly<Record<string, {
|
|
37
|
+
readonly type: MeshType;
|
|
38
|
+
readonly required: boolean;
|
|
39
|
+
}>>;
|
|
40
|
+
} | {
|
|
41
|
+
readonly kind: "optional";
|
|
42
|
+
readonly type: MeshType;
|
|
43
|
+
};
|
|
44
|
+
export interface Manifest {
|
|
45
|
+
readonly version: 1;
|
|
46
|
+
readonly types: Readonly<Record<string, never>>;
|
|
47
|
+
readonly components: Readonly<Record<string, {
|
|
48
|
+
readonly props: Readonly<Record<string, {
|
|
49
|
+
readonly type: MeshType;
|
|
50
|
+
readonly required: boolean;
|
|
51
|
+
}>>;
|
|
52
|
+
readonly events: Readonly<Record<string, {
|
|
53
|
+
readonly payload?: MeshType;
|
|
54
|
+
}>>;
|
|
55
|
+
readonly commands: Readonly<Record<string, {
|
|
56
|
+
readonly parameters: ReadonlyArray<{
|
|
57
|
+
readonly name: string;
|
|
58
|
+
readonly type: MeshType;
|
|
59
|
+
}>;
|
|
60
|
+
}>>;
|
|
61
|
+
readonly scope: Readonly<Record<string, MeshType>>;
|
|
62
|
+
}>>;
|
|
63
|
+
}
|
|
64
|
+
export interface ManifestOptions {
|
|
65
|
+
/** The application's Web realization table: its tags, and each tag's props and events. */
|
|
66
|
+
readonly primitives: WebPrimitives;
|
|
67
|
+
/** Each view's scope Schema, by the view's name (its key in `define`'s `views`): every name the view's template may read. */
|
|
68
|
+
readonly scopes: Readonly<Record<string, Schema.Schema<any, any, never>>>;
|
|
69
|
+
/** The application's `commands`: the very function `define` takes. It is called once, with a state that fails if the table reads it while being built. */
|
|
70
|
+
readonly commands: (state: Nexus.State.StateHandle<any>) => Readonly<Record<string, unknown>>;
|
|
71
|
+
}
|
|
72
|
+
/** The manifest of an application, derived from its Web primitives table, its views' scope Schemas and its command table. Pass it to `compileProgram` as JSON. */
|
|
73
|
+
export declare const manifest: (options: ManifestOptions) => Manifest;
|
|
74
|
+
//# sourceMappingURL=web-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-manifest.d.ts","sourceRoot":"","sources":["../src/web-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAoB,MAAM,QAAQ,CAAC;AAIlD,qBAAa,aAAc,SAAQ,KAAK;IAG1B,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,IAAI,mBAAmB;gBAEX,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIlD;AAED,uCAAuC;AACvC,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAA;CAAE,GAC/H;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;YAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC,CAAC;QAClG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;SAAE,CAAC,CAAC,CAAC;QAC3E,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;gBAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAC,CAAC;QACxI,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;KACpD,CAAC,CAAC,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,6HAA6H;IAC7H,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1E,0JAA0J;IAC1J,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC/F;AA4ID,kKAAkK;AAClK,eAAO,MAAM,QAAQ,GAAI,SAAS,eAAe,KAAG,QAmCnD,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { SchemaAST as AST } from "effect";
|
|
2
|
+
import { payloadKindOf } from "./web-payload.js";
|
|
3
|
+
export class ManifestError extends Error {
|
|
4
|
+
path;
|
|
5
|
+
_tag = "ManifestError";
|
|
6
|
+
constructor(path, reason) {
|
|
7
|
+
super(`${path}: ${reason}`);
|
|
8
|
+
this.path = path;
|
|
9
|
+
this.name = "ManifestError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const typeOf = (ast, path) => {
|
|
13
|
+
switch (ast._tag) {
|
|
14
|
+
case "StringKeyword": return { kind: "string" };
|
|
15
|
+
case "NumberKeyword": return { kind: "number" };
|
|
16
|
+
case "BooleanKeyword": return { kind: "boolean" };
|
|
17
|
+
case "AnyKeyword":
|
|
18
|
+
case "UnknownKeyword": return { kind: "any" };
|
|
19
|
+
case "Literal":
|
|
20
|
+
if (ast.literal === null) {
|
|
21
|
+
return { kind: "null" };
|
|
22
|
+
}
|
|
23
|
+
return { kind: typeof ast.literal === "number" ? "number" : typeof ast.literal === "boolean" ? "boolean" : "string" };
|
|
24
|
+
case "Refinement": return typeOf(ast.from, path);
|
|
25
|
+
case "Union": {
|
|
26
|
+
const members = ast.types.filter((member) => member._tag !== "UndefinedKeyword");
|
|
27
|
+
const kinds = new Set(members.map((member) => typeOf(member, path)).map((type) => JSON.stringify(type)));
|
|
28
|
+
if (kinds.size !== 1) {
|
|
29
|
+
throw new ManifestError(path, `a union of different kinds has no MESH type${members.some((member) => member._tag === "Literal" && member.literal === null) ? " (null is a value in MESH, a type of its own; MESH has no union, so say which)" : ""}`);
|
|
30
|
+
}
|
|
31
|
+
const only = typeOf(members[0], path);
|
|
32
|
+
return members.length === ast.types.length ? only : { kind: "optional", type: only };
|
|
33
|
+
}
|
|
34
|
+
case "TupleType":
|
|
35
|
+
if (ast.elements.length === 0 && ast.rest.length === 1) {
|
|
36
|
+
return { kind: "list", element: typeOf(ast.rest[0].type, `${path}[]`) };
|
|
37
|
+
}
|
|
38
|
+
throw new ManifestError(path, "a fixed-length tuple has no MESH type; use an array");
|
|
39
|
+
case "TypeLiteral": {
|
|
40
|
+
if (ast.indexSignatures.length > 0) {
|
|
41
|
+
throw new ManifestError(path, "a record with an index signature has no MESH type; name its fields");
|
|
42
|
+
}
|
|
43
|
+
return { kind: "record", fields: Object.fromEntries(ast.propertySignatures.map((property) => [String(property.name), fieldOf(property, `${path}.${String(property.name)}`)])) };
|
|
44
|
+
}
|
|
45
|
+
default:
|
|
46
|
+
throw new ManifestError(path, `${ast._tag} has no MESH type`);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const fieldOf = (property, path) => {
|
|
50
|
+
const withoutUndefined = property.type._tag === "Union" ? AST.Union.make(property.type.types.filter((member) => member._tag !== "UndefinedKeyword")) : property.type;
|
|
51
|
+
// `p?: T` (and `p?: T | undefined`) may be left out; `p: T | undefined` must be written but may be absent.
|
|
52
|
+
return property.isOptional
|
|
53
|
+
? { type: typeOf(withoutUndefined, path), required: false }
|
|
54
|
+
: { type: typeOf(property.type, path), required: true };
|
|
55
|
+
};
|
|
56
|
+
const structOf = (schema, path) => {
|
|
57
|
+
const ast = AST.typeAST(schema.ast);
|
|
58
|
+
if (ast._tag !== "TypeLiteral" || ast.indexSignatures.length > 0) {
|
|
59
|
+
throw new ManifestError(path, "must be a Schema.Struct: it names the values the view reads");
|
|
60
|
+
}
|
|
61
|
+
return ast;
|
|
62
|
+
};
|
|
63
|
+
// ---- the three sources ---------------------------------------------------------------------------------------------------------------------------------------------
|
|
64
|
+
const propOf = (name, realization, path) => {
|
|
65
|
+
switch (realization.kind) {
|
|
66
|
+
case "attribute":
|
|
67
|
+
case "controlled":
|
|
68
|
+
case "text-property": return { type: { kind: "string" }, required: true };
|
|
69
|
+
case "boolean-attribute": return { type: { kind: "boolean" }, required: false };
|
|
70
|
+
case "property": return { type: { kind: realization.holds === "value" ? "any" : realization.holds }, required: realization.holds !== "boolean" };
|
|
71
|
+
default: throw new ManifestError(path, `the realization of prop \`${name}\` is not one this version derives (${String(realization.kind)})`);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const tagOf = (tag, primitive) => ({
|
|
75
|
+
props: Object.fromEntries(Object.entries(primitive.props ?? {}).map(([name, realization]) => [name, propOf(name, realization, `${tag}.${name}`)])),
|
|
76
|
+
events: Object.fromEntries(Object.entries(primitive.events ?? {}).map(([name, realization]) => {
|
|
77
|
+
if (realization.payload === undefined) {
|
|
78
|
+
return [name, {}];
|
|
79
|
+
}
|
|
80
|
+
const kind = payloadKindOf(realization);
|
|
81
|
+
if (kind === undefined) {
|
|
82
|
+
throw new ManifestError(`${tag}.${name}`, "the event builds a payload, but the kind of that payload is not declared. Build it with Web.event(type, { kind, of }): a function does not say what it builds");
|
|
83
|
+
}
|
|
84
|
+
return [name, { payload: { kind } }];
|
|
85
|
+
})),
|
|
86
|
+
commands: {},
|
|
87
|
+
scope: {},
|
|
88
|
+
});
|
|
89
|
+
const commandsOf = (table, views) => {
|
|
90
|
+
const commands = {};
|
|
91
|
+
for (const [key, value] of Object.entries(table)) {
|
|
92
|
+
if (key.startsWith("app/")) {
|
|
93
|
+
continue; // an entry for `invoke`, history and `start`: no template runs it
|
|
94
|
+
}
|
|
95
|
+
if (key.includes("/")) {
|
|
96
|
+
throw new ManifestError(key, `an exact "component/name" key binds an \`entry\`, whose adapter turns the event's arguments into the command's input with a function; the parameters a template passes cannot be derived from it${views.has(key.split("/")[0]) ? "" : " (and the component is not one of the views)"}. Name the command by its bare name, whose arguments are its input's fields in order, or write the manifest by hand`);
|
|
97
|
+
}
|
|
98
|
+
if (typeof value !== "object" || value === null || !("input" in value)) {
|
|
99
|
+
throw new ManifestError(key, "a bare name must hold a command (a function such as an `entry` belongs under an exact key)");
|
|
100
|
+
}
|
|
101
|
+
const input = value.input;
|
|
102
|
+
const ast = AST.typeAST(input.ast);
|
|
103
|
+
commands[key] = {
|
|
104
|
+
parameters: ast._tag === "TypeLiteral" && ast.indexSignatures.length === 0
|
|
105
|
+
? ast.propertySignatures.map((property) => {
|
|
106
|
+
const field = fieldOf(property, `${key}.${String(property.name)}`);
|
|
107
|
+
if (!field.required) {
|
|
108
|
+
throw new ManifestError(`${key}.${String(property.name)}`, "an optional input field cannot be a manifest parameter: every parameter is required, and an invocation passes exactly that many arguments");
|
|
109
|
+
}
|
|
110
|
+
return { name: String(property.name), type: field.type };
|
|
111
|
+
})
|
|
112
|
+
: [{ name: "value", type: typeOf(ast, key) }],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return commands;
|
|
116
|
+
};
|
|
117
|
+
const noState = new Proxy({}, { get: (_target, property) => { throw new ManifestError("commands", `the table read state.${String(property)} while it was being built; a table is built without reading state (commands read it when they RUN)`); } });
|
|
118
|
+
/** The manifest of an application, derived from its Web primitives table, its views' scope Schemas and its command table. Pass it to `compileProgram` as JSON. */
|
|
119
|
+
export const manifest = (options) => {
|
|
120
|
+
const views = new Set(Object.keys(options.scopes));
|
|
121
|
+
const commands = commandsOf(options.commands(noState), views);
|
|
122
|
+
for (const name of [...Object.keys(options.primitives), ...views]) {
|
|
123
|
+
if (name === "mesh-if" || name === "mesh-each") {
|
|
124
|
+
throw new ManifestError(name, "is reserved by MESH for conditional and repeated structure, and is declared for you");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const view of views) {
|
|
128
|
+
if (Object.hasOwn(options.primitives, view)) {
|
|
129
|
+
throw new ManifestError(view, "is both a view and a primitive tag");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
version: 1,
|
|
134
|
+
types: {},
|
|
135
|
+
components: {
|
|
136
|
+
...Object.fromEntries(Object.entries(options.primitives).map(([tag, primitive]) => [tag, tagOf(tag, primitive)])),
|
|
137
|
+
"mesh-if": { props: { when: { type: { kind: "boolean" }, required: true } }, events: {}, commands: {}, scope: {} },
|
|
138
|
+
"mesh-each": { props: { items: { type: { kind: "list", element: { kind: "any" } }, required: true }, as: { type: { kind: "string" }, required: true }, key: { type: { kind: "any" }, required: true } }, events: {}, commands: {}, scope: {} },
|
|
139
|
+
...Object.fromEntries(Object.entries(options.scopes).map(([view, schema]) => [view, {
|
|
140
|
+
props: {},
|
|
141
|
+
events: {},
|
|
142
|
+
commands, // a bare command is every view's, as `start` binds it to every declared `component/name`
|
|
143
|
+
scope: Object.fromEntries(structOf(schema, view).propertySignatures.map((property) => {
|
|
144
|
+
const field = fieldOf(property, `${view}.${String(property.name)}`);
|
|
145
|
+
return [String(property.name), field.required ? field.type : { kind: "optional", type: field.type }];
|
|
146
|
+
})),
|
|
147
|
+
}])),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=web-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-manifest.js","sourceRoot":"","sources":["../src/web-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An event's payload, with its kind declared. PORT's event realization builds a payload with a function, and a function does not say what kind of value it builds; MESH's
|
|
3
|
+
* manifest must. `event` builds the realization and remembers the kind, so `manifest` (./web-manifest.ts) can state it without a second declaration. The result is an
|
|
4
|
+
* ordinary PORT `EventRealization`: it works in any primitives table whether or not a manifest is derived from it.
|
|
5
|
+
*/
|
|
6
|
+
import type { BoundaryValue } from "@valancex/mesh-runtime";
|
|
7
|
+
import type { EventRealization } from "@valancex/port-web";
|
|
8
|
+
export type PayloadKind = "string" | "number" | "boolean" | "any";
|
|
9
|
+
/** The kind `event` declared for `realization`, or undefined for one built any other way. */
|
|
10
|
+
export declare const payloadKindOf: (realization: EventRealization) => PayloadKind | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* The DOM event `type` constitutes the event. With `payload`, the event carries the value `of(event, element)` builds, of the declared `kind`: `event("input", { kind: "string",
|
|
13
|
+
* of: (_event, element) => (element as HTMLInputElement).value })`. Without it, the event carries nothing.
|
|
14
|
+
*/
|
|
15
|
+
export declare const event: (type: string, payload?: {
|
|
16
|
+
readonly kind: PayloadKind;
|
|
17
|
+
readonly of: (event: Event, element: Element) => BoundaryValue;
|
|
18
|
+
}) => EventRealization;
|
|
19
|
+
//# sourceMappingURL=web-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-payload.d.ts","sourceRoot":"","sources":["../src/web-payload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAIlE,6FAA6F;AAC7F,eAAO,MAAM,aAAa,GAAI,aAAa,gBAAgB,KAAG,WAAW,GAAG,SAAmC,CAAC;AAEhH;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,EAAE,UAAU;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,KAAK,aAAa,CAAA;CAAE,KAAG,gBAQ9I,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const kinds = new WeakMap();
|
|
2
|
+
/** The kind `event` declared for `realization`, or undefined for one built any other way. */
|
|
3
|
+
export const payloadKindOf = (realization) => kinds.get(realization);
|
|
4
|
+
/**
|
|
5
|
+
* The DOM event `type` constitutes the event. With `payload`, the event carries the value `of(event, element)` builds, of the declared `kind`: `event("input", { kind: "string",
|
|
6
|
+
* of: (_event, element) => (element as HTMLInputElement).value })`. Without it, the event carries nothing.
|
|
7
|
+
*/
|
|
8
|
+
export const event = (type, payload) => {
|
|
9
|
+
const realization = payload === undefined ? { type } : { type, payload: payload.of };
|
|
10
|
+
if (payload !== undefined) {
|
|
11
|
+
kinds.set(realization, payload.kind);
|
|
12
|
+
}
|
|
13
|
+
return realization;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=web-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-payload.js","sourceRoot":"","sources":["../src/web-payload.ts"],"names":[],"mappings":"AAUA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAuB,CAAC;AAEjD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAA6B,EAA2B,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAEhH;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,OAAwG,EAAoB,EAAE;IAChK,MAAM,WAAW,GAAqB,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAEvG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
|
package/dist/web.d.ts
CHANGED
|
@@ -3,12 +3,25 @@
|
|
|
3
3
|
* It adds nothing to PORT: it fixes `container` and `primitives` (the application's Web realization
|
|
4
4
|
* table, which is target configuration, not part of the application) and hands PORT the report callback.
|
|
5
5
|
*/
|
|
6
|
-
import type { HydrationResult, WebPort, WebPortOptions, WebPrimitives } from "@valancex/port-web";
|
|
6
|
+
import type { HydrationResult, WebPort, WebPortOptions, WebPrimitive, WebPrimitives } from "@valancex/port-web";
|
|
7
7
|
import type { BoundaryValue } from "@valancex/mesh-runtime";
|
|
8
8
|
import type { Ambient, ApplicationDefinition, ApplicationHandle, Mounted, StartOptions, TargetFactory } from "./index.js";
|
|
9
9
|
import { Effect, Scope } from "effect";
|
|
10
|
-
export type { HydrationResult, WebPrimitives } from "@valancex/port-web";
|
|
11
|
-
export { attribute, booleanAttribute, property, textProperty } from "@valancex/port-web";
|
|
10
|
+
export type { HydrationResult, WebPrimitive, WebPrimitives } from "@valancex/port-web";
|
|
11
|
+
export { attribute, booleanAttribute, controlled, property, textProperty } from "@valancex/port-web";
|
|
12
|
+
export { event } from "./web-payload.js";
|
|
13
|
+
export type { PayloadKind } from "./web-payload.js";
|
|
14
|
+
/**
|
|
15
|
+
* A link: an `<a>` whose one prop, `href`, is the destination. It declares no event: with `history` and a `container` (which `run` supplies), a click on it is the
|
|
16
|
+
* application's own navigation (see `HistoryOptions.container`), and without them it is an ordinary anchor. Put it in the primitives table under the name the view uses.
|
|
17
|
+
*/
|
|
18
|
+
export declare const link: WebPrimitive;
|
|
19
|
+
/**
|
|
20
|
+
* A text field: an `<input>` whose `value` is the application's text and whose `input` event carries what the user typed (a string). After every presentation the field shows
|
|
21
|
+
* exactly the rendered value (PORT's `controlled`), so state and screen cannot disagree; an edit the application declines is reasserted by the next presentation. Put it in the
|
|
22
|
+
* primitives table under the name the view uses.
|
|
23
|
+
*/
|
|
24
|
+
export declare const textField: WebPrimitive;
|
|
12
25
|
export declare const target: (options: Omit<WebPortOptions, "report">) => TargetFactory<WebPort>;
|
|
13
26
|
export interface HistoryOptions<S> {
|
|
14
27
|
/** The window whose URL and history are kept in step with the application (the container's own: `container.ownerDocument.defaultView`). */
|
|
@@ -17,8 +30,25 @@ export interface HistoryOptions<S> {
|
|
|
17
30
|
readonly urlOf: (state: S) => string;
|
|
18
31
|
/** What a URL says about the application: the one argument of the navigate binding. The application's, too. */
|
|
19
32
|
readonly stateOf: (url: URL) => BoundaryValue;
|
|
20
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* The application's navigate command. Either a **bare command name**, whose input is the navigation fact itself (the object `stateOf` returns), validated by the command's
|
|
35
|
+
* schema as always: `navigate: "go"` with `go: command(Schema.Struct({ id: Schema.String }), …)` and `stateOf: (url) => ({ id: … })`. Or an **exact binding key**
|
|
36
|
+
* (`"app/navigate"`), the same entry a MESH intent uses, for a command whose arguments need adapting.
|
|
37
|
+
*/
|
|
21
38
|
readonly navigate: string;
|
|
39
|
+
/**
|
|
40
|
+
* The document's title for a state, kept in step with the URL: set for the first state and for every later one, Back and Forward included. A title lives in the document's head,
|
|
41
|
+
* outside the container the view is drawn in, so it is not part of a view and the server cannot take it from one: the server's document writes the result of this same function
|
|
42
|
+
* for the state it rendered. Absent: the title is left alone.
|
|
43
|
+
*/
|
|
44
|
+
readonly titleOf?: (state: S) => string;
|
|
45
|
+
/**
|
|
46
|
+
* The element whose links are navigations. When given, a plain left click on an `<a href>` inside it that leads somewhere in this application's origin is a navigation
|
|
47
|
+
* request, exactly as a popstate is: `navigate` runs with `stateOf(destination)`, and the URL follows the state like any other navigation. The browser keeps every
|
|
48
|
+
* other click: Ctrl, Meta, Shift or Alt held, a non-primary button, `target` other than `_self`, `download`, another origin, a link to a place in the page you are
|
|
49
|
+
* already on (a `#fragment`), and a click something else already handled (`defaultPrevented`). Absent: links are ordinary anchors. `run` passes its own container.
|
|
50
|
+
*/
|
|
51
|
+
readonly container?: Element;
|
|
22
52
|
}
|
|
23
53
|
/**
|
|
24
54
|
* Keeps `location` and the application in step, in both directions, until the caller's Scope closes.
|
package/dist/web.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAM1H,OAAO,EAAS,MAAM,EAA8B,KAAK,EAAU,MAAM,QAAQ,CAAC;AAElF,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,YAAmE,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,YAIvB,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,SAAS,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAG,aAAa,CAAC,OAAO,CAAsD,CAAC;AAE7I,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,2IAA2I;IAC3I,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+GAA+G;IAC/G,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IACrC,+GAA+G;IAC/G,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AA8BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,aAAa,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CA6FnI,CAAC;AAEL,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACpD,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,yGAAyG;IACzG,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,qHAAqH;AACrH,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC;IACxB,mIAAmI;IACnI,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,uHAAuH;IACvH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC;IACxE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,GAAG,GAAU,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,MAAM,EAAE,KAAK,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,UAAU,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CA0BvJ,CAAC"}
|
package/dist/web.js
CHANGED
|
@@ -1,9 +1,48 @@
|
|
|
1
|
-
import { createWebPort } from "@valancex/port-web";
|
|
1
|
+
import { attribute, controlled, createWebPort } from "@valancex/port-web";
|
|
2
2
|
import { hydrate, mount, start } from "./index.js";
|
|
3
|
-
import { runningOf } from "./internal.js";
|
|
3
|
+
import { INPUT_KEY, runningOf } from "./internal.js";
|
|
4
|
+
import { event } from "./web-payload.js";
|
|
4
5
|
import { Cause, Effect, Exit, Fiber, Option, Queue, Scope, Stream } from "effect";
|
|
5
|
-
export { attribute, booleanAttribute, property, textProperty } from "@valancex/port-web";
|
|
6
|
+
export { attribute, booleanAttribute, controlled, property, textProperty } from "@valancex/port-web";
|
|
7
|
+
export { event } from "./web-payload.js";
|
|
8
|
+
/**
|
|
9
|
+
* A link: an `<a>` whose one prop, `href`, is the destination. It declares no event: with `history` and a `container` (which `run` supplies), a click on it is the
|
|
10
|
+
* application's own navigation (see `HistoryOptions.container`), and without them it is an ordinary anchor. Put it in the primitives table under the name the view uses.
|
|
11
|
+
*/
|
|
12
|
+
export const link = { element: "a", props: { href: attribute("href") } };
|
|
13
|
+
/**
|
|
14
|
+
* A text field: an `<input>` whose `value` is the application's text and whose `input` event carries what the user typed (a string). After every presentation the field shows
|
|
15
|
+
* exactly the rendered value (PORT's `controlled`), so state and screen cannot disagree; an edit the application declines is reasserted by the next presentation. Put it in the
|
|
16
|
+
* primitives table under the name the view uses.
|
|
17
|
+
*/
|
|
18
|
+
export const textField = {
|
|
19
|
+
element: "input",
|
|
20
|
+
props: { value: controlled("value") },
|
|
21
|
+
events: { input: event("input", { kind: "string", of: (_event, element) => element.value }) },
|
|
22
|
+
};
|
|
6
23
|
export const target = (options) => (report) => createWebPort({ ...options, report });
|
|
24
|
+
/**
|
|
25
|
+
* Where a click on a link inside `container` goes, when it is the application's to handle; otherwise undefined and the browser keeps it. See `HistoryOptions.container`.
|
|
26
|
+
* Pure over the event, the window and the container: it prevents nothing and starts nothing.
|
|
27
|
+
*/
|
|
28
|
+
const linkDestination = (event, win, container) => {
|
|
29
|
+
if (event.defaultPrevented || event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const origin = event.target;
|
|
33
|
+
const from = origin !== null && typeof origin.closest === "function" ? origin : origin?.parentElement ?? null;
|
|
34
|
+
const anchor = from?.closest("a[href]");
|
|
35
|
+
if (anchor === null || anchor === undefined || !container.contains(anchor) || (anchor.target !== "" && anchor.target !== "_self") || anchor.hasAttribute("download")) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const destination = new URL(anchor.href, win.location.href);
|
|
39
|
+
const here = new URL(win.location.href);
|
|
40
|
+
// Another origin (including mailto: and tel:, whose origin is "null"), or a place in the page already shown: the browser's.
|
|
41
|
+
if (destination.origin !== here.origin || (destination.hash !== "" && destination.pathname === here.pathname && destination.search === here.search)) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return destination;
|
|
45
|
+
};
|
|
7
46
|
/**
|
|
8
47
|
* Keeps `location` and the application in step, in both directions, until the caller's Scope closes.
|
|
9
48
|
*
|
|
@@ -30,8 +69,14 @@ export const history = (application, options) => Effect.gen(function* () {
|
|
|
30
69
|
const scope = yield* Effect.scope;
|
|
31
70
|
const { window: win } = options;
|
|
32
71
|
const popped = yield* Queue.unbounded();
|
|
72
|
+
const { container } = options;
|
|
73
|
+
// A bare `navigate` names a command that takes the navigation fact as its input; an exact key ("app/navigate") is the binding it always was.
|
|
74
|
+
const navigateKey = options.navigate.includes("/") ? options.navigate : INPUT_KEY(options.navigate);
|
|
33
75
|
// The application URL of the last state this mechanism has accounted for. Unset until the first state: the baseline.
|
|
34
76
|
let last;
|
|
77
|
+
// A link click whose destination starts at the top is waiting for its URL to be written: the browser records the position of the entry being left WHEN the URL is pushed, so the
|
|
78
|
+
// reset must come after the push, never before it, or Back would restore the top.
|
|
79
|
+
let top = false;
|
|
35
80
|
const follower = yield* Stream.runForEach(Stream.merge(Stream.map(running.states, (state) => ({ _tag: "state", state })), Stream.map(Stream.fromQueue(popped), (href) => ({ _tag: "popstate", href }))), (event) => (event._tag === "state"
|
|
36
81
|
? Effect.sync(() => {
|
|
37
82
|
const url = options.urlOf(event.state);
|
|
@@ -41,11 +86,21 @@ export const history = (application, options) => Effect.gen(function* () {
|
|
|
41
86
|
else if (url !== last) {
|
|
42
87
|
last = url;
|
|
43
88
|
win.history.pushState(null, "", url);
|
|
89
|
+
if (top) {
|
|
90
|
+
top = false;
|
|
91
|
+
if (win.scrollY !== 0 || win.scrollX !== 0) {
|
|
92
|
+
win.scrollTo(0, 0);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// After the URL, so a title function that throws cannot keep the URL from following the state.
|
|
97
|
+
if (options.titleOf !== undefined) {
|
|
98
|
+
win.document.title = options.titleOf(event.state);
|
|
44
99
|
}
|
|
45
100
|
})
|
|
46
101
|
: Effect.gen(function* () {
|
|
47
102
|
// Through the application's own entry: it runs in the application, and a failure or defect is logged, never the follower's.
|
|
48
|
-
yield* running.invoke(
|
|
103
|
+
yield* running.invoke(navigateKey, [{ value: options.stateOf(new URL(event.href)) }]).pipe(Effect.catchAllCause((cause) => Effect.logError("popstate navigation failed", cause)));
|
|
49
104
|
// The state the popstate produced is the new baseline, whatever URL history happens to hold for it.
|
|
50
105
|
last = options.urlOf(yield* running.state);
|
|
51
106
|
})).pipe(
|
|
@@ -54,9 +109,27 @@ export const history = (application, options) => Effect.gen(function* () {
|
|
|
54
109
|
Effect.catchAllCause((cause) => Effect.logError("history synchronization failed", cause)))).pipe(Effect.forkIn(scope));
|
|
55
110
|
const onPopState = () => { Queue.unsafeOffer(popped, win.location.href); };
|
|
56
111
|
win.addEventListener("popstate", onPopState);
|
|
112
|
+
// A link click is a navigation request. It is NOT handled by the follower: the navigate command may wait (it may load what the destination shows), and a wait in the follower
|
|
113
|
+
// would hold every URL write behind it. The command is the application's, started like any invoke; the state it commits is what the follower sees, and pushes.
|
|
114
|
+
const onClick = (event) => {
|
|
115
|
+
const destination = container === undefined ? undefined : linkDestination(event, win, container);
|
|
116
|
+
if (destination === undefined) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
event.preventDefault();
|
|
120
|
+
// A link click is a page change, and a page change starts at the top, as a native link does (taking the click took that with it). The follower does it, after it writes the URL.
|
|
121
|
+
// Back and Forward are not this: the browser restores their position itself. A destination with a #fragment is the application's own to scroll to.
|
|
122
|
+
top = destination.hash === "";
|
|
123
|
+
Effect.runFork(running.invoke(navigateKey, [{ value: options.stateOf(destination) }]).pipe(Effect.flatMap(() => running.state),
|
|
124
|
+
// The command is done. If the state's URL is the one already written, no push is coming (or it already happened): nothing is waiting for the top any more.
|
|
125
|
+
Effect.flatMap((state) => Effect.sync(() => { if (options.urlOf(state) === last) {
|
|
126
|
+
top = false;
|
|
127
|
+
} })), Effect.catchAllCause((cause) => Effect.sync(() => { top = false; }).pipe(Effect.zipRight(Effect.logError("link navigation failed", cause)))), Effect.forkIn(scope)));
|
|
128
|
+
};
|
|
129
|
+
container?.addEventListener("click", onClick);
|
|
57
130
|
// Reverse order of the scope: before the application ends.
|
|
58
131
|
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
59
|
-
yield* Effect.sync(() => { win.removeEventListener("popstate", onPopState); });
|
|
132
|
+
yield* Effect.sync(() => { win.removeEventListener("popstate", onPopState); container?.removeEventListener("click", onClick); });
|
|
60
133
|
yield* Fiber.interrupt(follower);
|
|
61
134
|
}));
|
|
62
135
|
});
|
|
@@ -79,7 +152,7 @@ export const run = async (app, options) => {
|
|
|
79
152
|
const web = target({ container: options.container, primitives: options.primitives });
|
|
80
153
|
const mounted = options.present === "hydrate" ? yield* hydrate(handle, web) : yield* mount(handle, web);
|
|
81
154
|
if (options.history !== undefined) {
|
|
82
|
-
yield* history(handle, options.history);
|
|
155
|
+
yield* history(handle, { container: options.container, ...options.history });
|
|
83
156
|
}
|
|
84
157
|
return { handle, mounted };
|
|
85
158
|
});
|
package/dist/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@valancex/valance",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "VALANCE application composition: starts a NEXUS application, renders it with MESH, and realizes it on a PORT target.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
"types": "./dist/web-server.d.ts",
|
|
28
28
|
"default": "./dist/web-server.js"
|
|
29
29
|
},
|
|
30
|
+
"./web/build": {
|
|
31
|
+
"types": "./dist/web-manifest.d.ts",
|
|
32
|
+
"default": "./dist/web-manifest.js"
|
|
33
|
+
},
|
|
30
34
|
"./internal": {
|
|
31
35
|
"types": "./dist/internal.d.ts",
|
|
32
36
|
"default": "./dist/internal.js"
|
|
@@ -42,7 +46,7 @@
|
|
|
42
46
|
},
|
|
43
47
|
"peerDependencies": {
|
|
44
48
|
"@valancex/mesh-runtime": "^0.8.0 || ^0.9.0",
|
|
45
|
-
"@valancex/port-web": "^0.
|
|
49
|
+
"@valancex/port-web": "^0.3.0",
|
|
46
50
|
"effect": "^3.10.0"
|
|
47
51
|
},
|
|
48
52
|
"peerDependenciesMeta": {
|
|
@@ -54,7 +58,7 @@
|
|
|
54
58
|
"@types/node": "^22.0.0",
|
|
55
59
|
"@valancex/mesh-compiler": "^0.9.0",
|
|
56
60
|
"@valancex/mesh-runtime": "^0.9.0",
|
|
57
|
-
"@valancex/port-web": "^0.
|
|
61
|
+
"@valancex/port-web": "^0.3.0",
|
|
58
62
|
"effect": "^3.10.0",
|
|
59
63
|
"typescript": "^5.6.0",
|
|
60
64
|
"vitest": "^3.2.0"
|