@mark1russell7/coeval 0.2.0 → 0.2.2
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/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +58 -19
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/deref.ts +38 -14
- package/src/evaluate.ts +17 -5
package/build/index.d.ts
CHANGED
|
@@ -608,6 +608,8 @@ type Walker = (input: WalkInput) => WalkResult;
|
|
|
608
608
|
* - `plain`: `true` when the values are data. Then a step does not ask the kind of an envelope, and a reference
|
|
609
609
|
* that a step reaches stays a value (no collapse).
|
|
610
610
|
* - `roots`: the roots that a path can start at. The default is each root.
|
|
611
|
+
* - `adopt`: the thing of each value that a path reaches. A host gives its own values a host thing with this
|
|
612
|
+
* function, for example a value whose fields read through signals. A host thing is not followed as a reference.
|
|
611
613
|
*/
|
|
612
614
|
interface Navigator {
|
|
613
615
|
readonly world: World;
|
|
@@ -615,6 +617,7 @@ interface Navigator {
|
|
|
615
617
|
readonly walkers?: Readonly<Record<string, Walker>>;
|
|
616
618
|
readonly plain?: boolean;
|
|
617
619
|
readonly roots?: readonly Root[];
|
|
620
|
+
readonly adopt?: (value: unknown) => Thing;
|
|
618
621
|
}
|
|
619
622
|
/** The way that one hop of a path was answered. */
|
|
620
623
|
type HopBy = "root" | "own" | "kind" | "default" | "step" | "collapse";
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["Shape","Part"],"sources":["../src/doc.ts","../src/errors.ts","../src/world.ts","../src/ladder.ts","../src/deref.ts","../src/classify.ts","../src/parts.ts","../src/evaluate.ts","../src/stdlib.ts","../src/order.ts","../src/context.ts","../src/static.ts","../src/formula.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["Shape","Part"],"sources":["../src/doc.ts","../src/errors.ts","../src/world.ts","../src/ladder.ts","../src/deref.ts","../src/classify.ts","../src/parts.ts","../src/evaluate.ts","../src/stdlib.ts","../src/order.ts","../src/context.ts","../src/static.ts","../src/formula.ts"],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -766,21 +766,45 @@ const NO_HOPS = Object.freeze([]);
|
|
|
766
766
|
function mayBeRef(thing) {
|
|
767
767
|
return typeof thing === "object" && thing !== null && thing.type === "ref";
|
|
768
768
|
}
|
|
769
|
+
/** This function tells if each step of a path from an index is a key. */
|
|
770
|
+
function keysFrom(path, start) {
|
|
771
|
+
for (let index = start; index < path.length; index += 1) if (!isKey(path[index])) return false;
|
|
772
|
+
return true;
|
|
773
|
+
}
|
|
769
774
|
/**
|
|
770
|
-
* This function resolves the common path without a record of hops: a root, then keys
|
|
771
|
-
*
|
|
772
|
-
* follow, a step document and a
|
|
775
|
+
* This function resolves the common path without a record of hops: a root, then keys. Plain values answer the
|
|
776
|
+
* keys, or a host thing answers all of them in one call. It gives `undefined` when the path needs the full
|
|
777
|
+
* algorithm. Examples are a host thing without `resolve`, an envelope, a reference to follow, a step document and a
|
|
778
|
+
* failure of a step (for its exact reason).
|
|
773
779
|
*/
|
|
774
780
|
function resolveQuick(nav, ctx, path) {
|
|
775
781
|
const root = path[0];
|
|
776
|
-
if (root !== "names" && root !== "self" && root !== "event") return void 0;
|
|
782
|
+
if (root !== "names" && root !== "self" && root !== "event" && root !== "world") return void 0;
|
|
777
783
|
if (nav.roots !== void 0 && !nav.roots.includes(root)) return void 0;
|
|
784
|
+
if (nav.adopt !== void 0) return void 0;
|
|
778
785
|
let here = ctx[root];
|
|
779
786
|
const plain = nav.plain === true;
|
|
780
787
|
for (let index = 1; index < path.length; index += 1) {
|
|
781
788
|
if (typeof here !== "object" || here === null) return void 0;
|
|
782
789
|
if (!plain && mayBeRef(here)) return void 0;
|
|
783
|
-
if (here[THING] === true)
|
|
790
|
+
if (here[THING] === true) {
|
|
791
|
+
const thing = here;
|
|
792
|
+
if (thing.resolve === void 0 || !keysFrom(path, index)) return void 0;
|
|
793
|
+
const keys = path.slice(index);
|
|
794
|
+
const reached = thing.resolve(keys);
|
|
795
|
+
if (reached === void 0) return {
|
|
796
|
+
ok: false,
|
|
797
|
+
code: "#N/A",
|
|
798
|
+
reason: `The path ${keys.join(".")} reaches nothing.`,
|
|
799
|
+
hops: NO_HOPS
|
|
800
|
+
};
|
|
801
|
+
if (!plain && mayBeRef(reached.thing)) return void 0;
|
|
802
|
+
return {
|
|
803
|
+
ok: true,
|
|
804
|
+
thing: reached.thing,
|
|
805
|
+
hops: NO_HOPS
|
|
806
|
+
};
|
|
807
|
+
}
|
|
784
808
|
const step = path[index];
|
|
785
809
|
if (Array.isArray(here)) {
|
|
786
810
|
if (typeof step !== "number" || !Number.isInteger(step) || step < 0 || step >= here.length) return void 0;
|
|
@@ -834,6 +858,7 @@ function resolve(nav, ctx, path, options = {}) {
|
|
|
834
858
|
hops: done
|
|
835
859
|
});
|
|
836
860
|
let collapses = 0;
|
|
861
|
+
const adopt = nav.adopt ?? ((value) => value);
|
|
837
862
|
const collapse = (thing) => {
|
|
838
863
|
let here = thing;
|
|
839
864
|
if (nav.plain === true) return {
|
|
@@ -846,7 +871,7 @@ function resolve(nav, ctx, path, options = {}) {
|
|
|
846
871
|
if (collapses > MAX_COLLAPSE) return failed("#CYCLE!", "The references form a cycle.");
|
|
847
872
|
const inner = walk(here.value);
|
|
848
873
|
if (!inner.ok) return inner;
|
|
849
|
-
here = inner.thing;
|
|
874
|
+
here = adopt(inner.thing);
|
|
850
875
|
hops?.push({
|
|
851
876
|
step: "collapse",
|
|
852
877
|
thing: here,
|
|
@@ -863,7 +888,7 @@ function resolve(nav, ctx, path, options = {}) {
|
|
|
863
888
|
const root = steps[0];
|
|
864
889
|
if (typeof root !== "string" || !ROOTS.includes(root)) return failed("#REF!", `A path starts with a root: ${ROOTS.join(", ")}.`);
|
|
865
890
|
if (nav.roots !== void 0 && !nav.roots.includes(root)) return failed("#REF!", `The root ${root} is not open here. The open roots are ${nav.roots.join(", ")}.`);
|
|
866
|
-
let here = ctx[root];
|
|
891
|
+
let here = adopt(ctx[root]);
|
|
867
892
|
hops?.push({
|
|
868
893
|
step: root,
|
|
869
894
|
thing: here,
|
|
@@ -878,12 +903,13 @@ function resolve(nav, ctx, path, options = {}) {
|
|
|
878
903
|
const keys = steps.slice(index);
|
|
879
904
|
const reached = here.resolve(keys);
|
|
880
905
|
if (reached === void 0) return failed("#N/A", `The path ${keys.join(".")} reaches nothing.`);
|
|
906
|
+
const thing = adopt(reached.thing);
|
|
881
907
|
hops?.push({
|
|
882
908
|
step: keys,
|
|
883
|
-
thing
|
|
909
|
+
thing,
|
|
884
910
|
by: "own"
|
|
885
911
|
});
|
|
886
|
-
return collapse(
|
|
912
|
+
return collapse(thing);
|
|
887
913
|
}
|
|
888
914
|
if (isKey(step)) {
|
|
889
915
|
const reached = derefStep(nav, here, step);
|
|
@@ -891,12 +917,12 @@ function resolve(nav, ctx, path, options = {}) {
|
|
|
891
917
|
if (root === "names" && index === 1) return failed("#NAME?", `The context has no name ${String(step)}.`);
|
|
892
918
|
return failed("#N/A", `The step ${String(step)} reaches nothing.`);
|
|
893
919
|
}
|
|
920
|
+
here = adopt(reached.thing);
|
|
894
921
|
hops?.push({
|
|
895
922
|
step,
|
|
896
|
-
thing:
|
|
923
|
+
thing: here,
|
|
897
924
|
by: reached.by
|
|
898
925
|
});
|
|
899
|
-
here = reached.thing;
|
|
900
926
|
} else {
|
|
901
927
|
const envelope = isEnvelope(step) ? step : void 0;
|
|
902
928
|
const found = envelope === void 0 ? void 0 : lookupKind(nav.world, envelope.type);
|
|
@@ -907,15 +933,18 @@ function resolve(nav, ctx, path, options = {}) {
|
|
|
907
933
|
data: envelope.value,
|
|
908
934
|
here,
|
|
909
935
|
context: ctx,
|
|
910
|
-
deref: (thing, key) =>
|
|
936
|
+
deref: (thing, key) => {
|
|
937
|
+
const reached = derefStep(nav, thing, key);
|
|
938
|
+
return reached === void 0 ? void 0 : adopt(reached.thing);
|
|
939
|
+
}
|
|
911
940
|
});
|
|
912
941
|
if (!result.ok) return failed("#N/A", result.reason);
|
|
942
|
+
here = adopt(result.thing);
|
|
913
943
|
hops?.push({
|
|
914
944
|
step: envelope,
|
|
915
|
-
thing:
|
|
945
|
+
thing: here,
|
|
916
946
|
by: "step"
|
|
917
947
|
});
|
|
918
|
-
here = result.thing;
|
|
919
948
|
}
|
|
920
949
|
const next = collapse(here);
|
|
921
950
|
if (!next.ok) return next;
|
|
@@ -1218,6 +1247,9 @@ const NO_ANSWER = {
|
|
|
1218
1247
|
error: "no-answer",
|
|
1219
1248
|
steps: []
|
|
1220
1249
|
};
|
|
1250
|
+
/** The options of a resolution without a record of hops, and with one. One object of each serves each call. */
|
|
1251
|
+
const WITHOUT_HOPS = Object.freeze({ hops: false });
|
|
1252
|
+
const WITH_HOPS = Object.freeze({ hops: true });
|
|
1221
1253
|
/** This class holds the state of one evaluation or run: the machine, the effects, the clock and the trace. */
|
|
1222
1254
|
var Session = class {
|
|
1223
1255
|
machine;
|
|
@@ -1225,7 +1257,8 @@ var Session = class {
|
|
|
1225
1257
|
traced;
|
|
1226
1258
|
perform;
|
|
1227
1259
|
signal;
|
|
1228
|
-
effects
|
|
1260
|
+
/** The list of the effects. It is made at the first effect, thus an evaluation without effects makes no list. */
|
|
1261
|
+
list;
|
|
1229
1262
|
tick = 0;
|
|
1230
1263
|
nextId = 0;
|
|
1231
1264
|
current;
|
|
@@ -1236,12 +1269,17 @@ var Session = class {
|
|
|
1236
1269
|
this.traced = traced;
|
|
1237
1270
|
this.perform = perform;
|
|
1238
1271
|
this.signal = signal;
|
|
1239
|
-
this.
|
|
1272
|
+
this.list = effects;
|
|
1240
1273
|
this.holder = traced ? holderNode() : void 0;
|
|
1241
1274
|
this.current = this.holder;
|
|
1242
1275
|
}
|
|
1276
|
+
/** The effects of the evaluation, in their order. */
|
|
1277
|
+
get effects() {
|
|
1278
|
+
return this.list ??= [];
|
|
1279
|
+
}
|
|
1243
1280
|
resolve(ctx, path, options) {
|
|
1244
|
-
|
|
1281
|
+
const hops = options?.hops ?? this.traced;
|
|
1282
|
+
return resolve(this.machine, ctx, path, hops ? WITH_HOPS : WITHOUT_HOPS);
|
|
1245
1283
|
}
|
|
1246
1284
|
permitted(ctx, keys) {
|
|
1247
1285
|
return this.machine.permits === void 0 ? permits(ctx.caps, keys) : this.machine.permits(ctx.caps, keys, ctx);
|
|
@@ -1251,8 +1289,9 @@ var Session = class {
|
|
|
1251
1289
|
const text = keys.join(".");
|
|
1252
1290
|
if (!this.permitted(ctx, keys)) return fail("#CAP!", `The context has no capability for the effect ${text}.`, { place });
|
|
1253
1291
|
const node = this.current;
|
|
1292
|
+
const list = this.effects;
|
|
1254
1293
|
const effect = {
|
|
1255
|
-
index:
|
|
1294
|
+
index: list.length,
|
|
1256
1295
|
kind: text,
|
|
1257
1296
|
path: keys,
|
|
1258
1297
|
payload,
|
|
@@ -1261,7 +1300,7 @@ var Session = class {
|
|
|
1261
1300
|
place,
|
|
1262
1301
|
context: ctx
|
|
1263
1302
|
};
|
|
1264
|
-
|
|
1303
|
+
list.push(effect);
|
|
1265
1304
|
if (node !== void 0) node.effects.push(effect.index);
|
|
1266
1305
|
return effect;
|
|
1267
1306
|
}
|