@quenk/potoo 4.1.12 → 4.1.14
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/lib/actor/system/vm/conf.d.ts +7 -0
- package/lib/actor/system/vm/index.js +1 -1
- package/lib/actor/system/vm/index.js.map +1 -1
- package/lib/actor/system/vm/strategy/error.d.ts +3 -1
- package/lib/actor/system/vm/strategy/error.js +10 -5
- package/lib/actor/system/vm/strategy/error.js.map +1 -1
- package/lib/actor/system/vm/thread/collector.js +1 -1
- package/lib/actor/system/vm/thread/collector.js.map +1 -1
- package/lib/actor/system/vm/thread/shared/js.d.ts +2 -2
- package/lib/actor/system/vm/thread/shared/js.js +3 -3
- package/lib/actor/system/vm/thread/shared/js.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Err } from '@quenk/noni/lib/control/err';
|
|
2
|
+
import { TrapAction } from '../../template';
|
|
1
3
|
import { LogSink } from './log';
|
|
2
4
|
/**
|
|
3
5
|
* PartialConf allows only some values to be specified in a Conf object
|
|
@@ -5,6 +7,7 @@ import { LogSink } from './log';
|
|
|
5
7
|
*/
|
|
6
8
|
export interface PartialConf {
|
|
7
9
|
log?: Partial<Conf['log']>;
|
|
10
|
+
trap?: Conf['trap'];
|
|
8
11
|
}
|
|
9
12
|
/**
|
|
10
13
|
* Conf objects are used to create and configue various aspects of thhe VM.
|
|
@@ -27,4 +30,8 @@ export interface Conf {
|
|
|
27
30
|
*/
|
|
28
31
|
sink: LogSink;
|
|
29
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* trap if specified is used as the default trap handler for all actors.
|
|
35
|
+
*/
|
|
36
|
+
trap?: (e: Err) => TrapAction;
|
|
30
37
|
}
|
|
@@ -50,7 +50,7 @@ class PVM {
|
|
|
50
50
|
let vm;
|
|
51
51
|
let allocator = new map_1.MapAllocator(() => vm);
|
|
52
52
|
let log = new writer_1.LogWriter(config.log.sink, (0, log_1.toLogLevelValue)(config.log.level));
|
|
53
|
-
vm = new PVM(allocator, new scheduler_1.Scheduler(), new collector_1.ThreadCollector(() => vm), new error_1.SupervisorErrorStrategy(allocator), log, new dispatcher_1.EventDispatcher(log), new runner_1.ThreadRunner(() => vm), new group_1.GroupMap());
|
|
53
|
+
vm = new PVM(allocator, new scheduler_1.Scheduler(), new collector_1.ThreadCollector(() => vm), new error_1.SupervisorErrorStrategy(allocator, conf.trap), log, new dispatcher_1.EventDispatcher(log), new runner_1.ThreadRunner(() => vm), new group_1.GroupMap());
|
|
54
54
|
return vm;
|
|
55
55
|
}
|
|
56
56
|
// Actor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actor/system/vm/index.ts"],"names":[],"mappings":";;;AACA,0CAA0C;AAC1C,kCAAkC;AAGlC,iEAA8D;AAC9D,sDAAyD;AACzD,wDAAoD;AAEpD,2CAMuB;AACvB,6CAA+C;AAE/C,yCAA+C;AAC/C,4CAA0E;AAE1E,mCAAmC;AACnC,2CAAwC;AAGxC,yCAAsD;AACtD,mDAAqD;AACrD,4CAA+C;AAE/C,+BAAwC;AACxC,kDAAqD;AA4ErD;;;;;;;GAOG;AACH,MAAa,GAAG;IACZ,YACW,YAAuB,IAAI,kBAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EACnD,YAAuB,IAAI,qBAAS,EAAE,EACtC,YAA6B,IAAI,2BAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAC5D,SAAwB,IAAI,+BAAuB,CAAC,SAAS,CAAC,EAC9D,MAAmB,IAAI,kBAAS,CAAC,OAAO,CAAC,EACzC,SAAS,IAAI,4BAAe,CAAC,GAAG,CAAC,EACjC,SAAuB,IAAI,qBAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EACnD,SAAmB,IAAI,gBAAQ,EAAE,EACjC,UAAU,wBAAc,EACxB,OAAO,wBAAc,EACrB,WAA8B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;QAVpD,cAAS,GAAT,SAAS,CAA0C;QACnD,cAAS,GAAT,SAAS,CAA6B;QACtC,cAAS,GAAT,SAAS,CAAmD;QAC5D,WAAM,GAAN,MAAM,CAAwD;QAC9D,QAAG,GAAH,GAAG,CAAsC;QACzC,WAAM,GAAN,MAAM,CAA2B;QACjC,WAAM,GAAN,MAAM,CAA6C;QACnD,WAAM,GAAN,MAAM,CAA2B;QACjC,YAAO,GAAP,OAAO,CAAiB;QACxB,SAAI,GAAJ,IAAI,CAAiB;QACrB,aAAQ,GAAR,QAAQ,CAA4C;IAC5D,CAAC;IAEJ;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAoB,EAAE;;QAChC,IAAI,MAAM,GAAS;YACf,GAAG,EAAE,IAAA,cAAK,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,EAAE,CAAC;SAC/D,CAAC;QAEF,IAAI,EAAO,CAAC;QAEZ,IAAI,SAAS,GAAG,IAAI,kBAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,IAAI,kBAAS,CACnB,MAAM,CAAC,GAAG,CAAC,IAAI,EACf,IAAA,qBAAe,EAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CACpC,CAAC;QAEF,EAAE,GAAG,IAAI,GAAG,CACR,SAAS,EACT,IAAI,qBAAS,EAAE,EACf,IAAI,2BAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAC7B,IAAI,+BAAuB,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actor/system/vm/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Err } from '@quenk/noni/lib/control/err';
|
|
2
2
|
import { Thread } from '../thread';
|
|
3
3
|
import { Allocator } from '../allocator';
|
|
4
|
+
import { TrapFunc } from '../../../template';
|
|
4
5
|
/**
|
|
5
6
|
* ErrorStrategy is the interface used by threads to communicate errors that
|
|
6
7
|
* have occurred within the system.
|
|
@@ -23,6 +24,7 @@ export interface ErrorStrategy {
|
|
|
23
24
|
*/
|
|
24
25
|
export declare class SupervisorErrorStrategy implements ErrorStrategy {
|
|
25
26
|
allocator: Allocator;
|
|
26
|
-
|
|
27
|
+
defaultTrap: TrapFunc;
|
|
28
|
+
constructor(allocator: Allocator, defaultTrap?: TrapFunc);
|
|
27
29
|
raise(src: Thread, error: Err): Promise<void>;
|
|
28
30
|
}
|
|
@@ -5,20 +5,23 @@ const template = require("../../../template");
|
|
|
5
5
|
const errors = require("../runtime/error");
|
|
6
6
|
const err_1 = require("@quenk/noni/lib/control/err");
|
|
7
7
|
const address_1 = require("../../../address");
|
|
8
|
+
const js_1 = require("../thread/shared/js");
|
|
9
|
+
const shared_1 = require("../thread/shared");
|
|
8
10
|
/**
|
|
9
11
|
* SupervisorErrorStrategy defaults to raising the error with the parent actor
|
|
10
12
|
* if no trap function is specified.
|
|
11
13
|
*/
|
|
12
14
|
class SupervisorErrorStrategy {
|
|
13
|
-
constructor(allocator) {
|
|
15
|
+
constructor(allocator, defaultTrap = () => template.ACTION_RAISE) {
|
|
14
16
|
this.allocator = allocator;
|
|
17
|
+
this.defaultTrap = defaultTrap;
|
|
15
18
|
}
|
|
16
19
|
async raise(src, error) {
|
|
17
20
|
var _a;
|
|
18
21
|
let prevThread;
|
|
19
22
|
let err = error;
|
|
20
23
|
let currentThread = src;
|
|
21
|
-
let allocator = this
|
|
24
|
+
let { allocator } = this;
|
|
22
25
|
while (true) {
|
|
23
26
|
if (prevThread) {
|
|
24
27
|
await allocator.deallocate(prevThread);
|
|
@@ -30,10 +33,13 @@ class SupervisorErrorStrategy {
|
|
|
30
33
|
err = new errors.ActorTerminatedErr(currentThread.address, src.address, error);
|
|
31
34
|
}
|
|
32
35
|
let tmpl = allocator.getTemplate(currentThread.address).get();
|
|
33
|
-
let trap = (_a = tmpl.trap) !== null && _a !== void 0 ? _a : defaultTrap;
|
|
36
|
+
let trap = (_a = tmpl.trap) !== null && _a !== void 0 ? _a : this.defaultTrap;
|
|
34
37
|
let action = trap(err);
|
|
35
38
|
if (action === template.ACTION_IGNORE) {
|
|
36
|
-
//TODO:
|
|
39
|
+
//TODO: figure this out correctly.
|
|
40
|
+
if (currentThread instanceof js_1.JSThread) {
|
|
41
|
+
currentThread.state = shared_1.ThreadState.IDLE;
|
|
42
|
+
}
|
|
37
43
|
return;
|
|
38
44
|
}
|
|
39
45
|
else if (action === template.ACTION_RESTART) {
|
|
@@ -53,5 +59,4 @@ class SupervisorErrorStrategy {
|
|
|
53
59
|
}
|
|
54
60
|
}
|
|
55
61
|
exports.SupervisorErrorStrategy = SupervisorErrorStrategy;
|
|
56
|
-
const defaultTrap = () => template.ACTION_RAISE;
|
|
57
62
|
//# sourceMappingURL=error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../src/actor/system/vm/strategy/error.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AAC9C,2CAA2C;AAE3C,qDAA2D;AAE3D,8CAA6D;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../src/actor/system/vm/strategy/error.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AAC9C,2CAA2C;AAE3C,qDAA2D;AAE3D,8CAA6D;AAG7D,4CAA+C;AAC/C,6CAA+C;AAoB/C;;;GAGG;AACH,MAAa,uBAAuB;IAChC,YACW,SAAoB,EACpB,cAAwB,GAAE,EAAE,CAAC,QAAQ,CAAC,YAAY;QADlD,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAuC;IAC1D,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAU;;QAC/B,IAAI,UAAU,CAAC;QAEf,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,aAAa,GAAG,GAAG,CAAC;QAExB,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEzB,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBACvC,IAAI,cAAc,GAAG,SAAS,CAAC,SAAS,CACpC,IAAA,mBAAS,EAAC,UAAU,CAAC,OAAO,CAAC,CAChC,CAAC;gBAEF,8BAA8B;gBAC9B,IAAI,cAAc,CAAC,SAAS,EAAE;oBAAE,MAAM;gBAEtC,aAAa,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;gBAErC,GAAG,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAC/B,aAAa,CAAC,OAAO,EACrB,GAAG,CAAC,OAAO,EACX,KAAK,CACR,CAAC;YACN,CAAC;YAED,IAAI,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;YAE9D,IAAI,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,WAAW,CAAC;YAEzC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAEvB,IAAI,MAAM,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACpC,kCAAkC;gBAClC,IAAI,aAAa,YAAY,aAAQ,EAAE,CAAC;oBACpC,aAAa,CAAC,KAAK,GAAG,oBAAW,CAAC,IAAI,CAAC;gBAC3C,CAAC;gBACD,OAAO;YACX,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5C,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC1C,OAAO;YACX,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC1C,OAAO;YACX,CAAC;iBAAM,IAAI,aAAa,CAAC,OAAO,KAAK,wBAAc,EAAE,CAAC;gBAClD,MAAM;YACV,CAAC;YAED,UAAU,GAAG,aAAa,CAAC;QAC/B,CAAC;QAED,MAAM,IAAA,aAAO,EAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CACJ;AA7DD,0DA6DC"}
|
|
@@ -40,7 +40,7 @@ class ThreadCollector {
|
|
|
40
40
|
* This deallocates the thread if it has no children.
|
|
41
41
|
*/
|
|
42
42
|
async collect(thread) {
|
|
43
|
-
|
|
43
|
+
queueMicrotask(async () => {
|
|
44
44
|
if (!this.threads.has(thread))
|
|
45
45
|
return;
|
|
46
46
|
let { allocator } = (0, lazy_1.evaluate)(this.vm);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../../src/actor/system/vm/thread/collector.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AACnD,oDAA2D;AAI3D,qCAA2D;AAE3D;;;;;;;GAOG;AACH,MAAa,eAAe;IACxB,YACW,EAAa,EACb,UAAuB,IAAI,GAAG,EAAE;QADhC,OAAE,GAAF,EAAE,CAAW;QACb,YAAO,GAAP,OAAO,CAAyB;IACxC,CAAC;IAEJ;;;;OAIG;IACH,IAAI,CAAC,MAAc;QACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../../src/actor/system/vm/thread/collector.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AACnD,oDAA2D;AAI3D,qCAA2D;AAE3D;;;;;;;GAOG;AACH,MAAa,eAAe;IACxB,YACW,EAAa,EACb,UAAuB,IAAI,GAAG,EAAE;QADhC,OAAE,GAAF,EAAE,CAAW;QACb,YAAO,GAAP,OAAO,CAAyB;IACxC,CAAC;IAEJ;;;;OAIG;IACH,IAAI,CAAC,MAAc;QACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QACxB,cAAc,CAAC,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEtC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtC,IACI,IAAA,aAAK,EAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAO,CAAC,KAAK,KAAK,0BAAiB,EACpD,CAAC;gBACC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7CD,0CA6CC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Err } from '@quenk/noni/lib/control/error';
|
|
2
2
|
import { Case } from '@quenk/noni/lib/control/match/case';
|
|
3
|
+
import { Maybe } from '@quenk/noni/lib/data/maybe';
|
|
3
4
|
import { SharedTemplate, Spawnable } from '../../../../template';
|
|
4
5
|
import { Address } from '../../../../address';
|
|
5
6
|
import { Actor, Message } from '../../../..';
|
|
6
7
|
import { VM } from '../../';
|
|
7
8
|
import { SharedThread, ThreadState } from '.';
|
|
8
|
-
import { Maybe } from '@quenk/noni/lib/data/maybe';
|
|
9
9
|
export declare const ERR_THREAD_INVALID = "ERR_THREAD_INVALID";
|
|
10
10
|
/**
|
|
11
11
|
* JSThread is used by actors that run in the same event loop as the VM.
|
|
@@ -24,7 +24,7 @@ export declare class JSThread implements SharedThread {
|
|
|
24
24
|
start(): Promise<void>;
|
|
25
25
|
notify(msg: Message): Promise<void>;
|
|
26
26
|
stop(): Promise<void>;
|
|
27
|
-
watch<T>(task: () => Promise<T>): Promise<void>;
|
|
27
|
+
watch<T>(task: () => Promise<T> | Promise<T>): Promise<void>;
|
|
28
28
|
kill(address: Address): Promise<void>;
|
|
29
29
|
die(): void;
|
|
30
30
|
/**
|
|
@@ -5,13 +5,13 @@ const future_1 = require("@quenk/noni/lib/control/monad/future");
|
|
|
5
5
|
const array_1 = require("@quenk/noni/lib/data/array");
|
|
6
6
|
const case_1 = require("@quenk/noni/lib/control/match/case");
|
|
7
7
|
const function_1 = require("@quenk/noni/lib/data/function");
|
|
8
|
+
const type_1 = require("@quenk/noni/lib/data/type");
|
|
9
|
+
const maybe_1 = require("@quenk/noni/lib/data/maybe");
|
|
8
10
|
const template_1 = require("../../../../template");
|
|
9
11
|
const address_1 = require("../../../../address");
|
|
10
12
|
const scheduler_1 = require("../../scheduler");
|
|
11
13
|
const _1 = require(".");
|
|
12
14
|
const event_1 = require("../../event");
|
|
13
|
-
const type_1 = require("@quenk/noni/lib/data/type");
|
|
14
|
-
const maybe_1 = require("@quenk/noni/lib/data/maybe");
|
|
15
15
|
const defaultCases = [new case_1.Default(function_1.identity)];
|
|
16
16
|
exports.ERR_THREAD_INVALID = 'ERR_THREAD_INVALID';
|
|
17
17
|
/**
|
|
@@ -60,7 +60,7 @@ class JSThread {
|
|
|
60
60
|
}
|
|
61
61
|
async watch(task) {
|
|
62
62
|
this._assertValid();
|
|
63
|
-
await future_1.Future.do(task).catch(err => this.raise(err));
|
|
63
|
+
await ((0, type_1.isFunction)(task) ? future_1.Future.do(task) : task).catch(err => this.raise(err));
|
|
64
64
|
}
|
|
65
65
|
async kill(address) {
|
|
66
66
|
this._assertValid();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../../../../../src/actor/system/vm/thread/shared/js.ts"],"names":[],"mappings":";;;AACA,iEAA8D;AAC9D,sDAAmD;AACnD,6DAI4C;AAC5C,4DAAyD;
|
|
1
|
+
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../../../../../src/actor/system/vm/thread/shared/js.ts"],"names":[],"mappings":"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"}
|