liminal 0.5.3 → 0.5.4
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/Agent.ts +5 -5
- package/CHANGELOG.md +9 -0
- package/EventBase.ts +13 -0
- package/Fiber.ts +42 -92
- package/Globals.ts +1 -1
- package/L/L.ts +0 -1
- package/L/_infer.ts +27 -22
- package/L/_message.ts +5 -7
- package/L/assistant.ts +2 -9
- package/L/branch.ts +30 -24
- package/L/emit.ts +2 -3
- package/L/fork.ts +18 -16
- package/L/model.ts +3 -2
- package/L/rune.ts +2 -2
- package/L/self.ts +3 -3
- package/LEvent.ts +40 -17
- package/Rune.ts +2 -2
- package/dist/Agent.d.ts +1 -1
- package/dist/Agent.js +4 -5
- package/dist/Agent.js.map +1 -1
- package/dist/EventBase.d.ts +7 -0
- package/dist/EventBase.js +14 -0
- package/dist/EventBase.js.map +1 -0
- package/dist/Fiber.d.ts +8 -22
- package/dist/Fiber.js +32 -74
- package/dist/Fiber.js.map +1 -1
- package/dist/Globals.d.ts +0 -1
- package/dist/L/L.d.ts +0 -1
- package/dist/L/L.js +0 -1
- package/dist/L/L.js.map +1 -1
- package/dist/L/_infer.d.ts +2 -2
- package/dist/L/_infer.js +19 -16
- package/dist/L/_infer.js.map +1 -1
- package/dist/L/_message.js +5 -7
- package/dist/L/_message.js.map +1 -1
- package/dist/L/assistant.js +2 -7
- package/dist/L/assistant.js.map +1 -1
- package/dist/L/branch.js +31 -22
- package/dist/L/branch.js.map +1 -1
- package/dist/L/emit.js +2 -3
- package/dist/L/emit.js.map +1 -1
- package/dist/L/fork.d.ts +1 -7
- package/dist/L/fork.js +19 -10
- package/dist/L/fork.js.map +1 -1
- package/dist/L/model.js +3 -2
- package/dist/L/model.js.map +1 -1
- package/dist/L/rune.d.ts +2 -2
- package/dist/L/rune.js.map +1 -1
- package/dist/L/self.d.ts +2 -2
- package/dist/L/self.js +1 -1
- package/dist/L/self.js.map +1 -1
- package/dist/LEvent.d.ts +22 -19
- package/dist/LEvent.js +44 -0
- package/dist/LEvent.js.map +1 -1
- package/dist/Rune.d.ts +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/run.d.ts +3 -0
- package/dist/run.js +35 -0
- package/dist/run.js.map +1 -0
- package/dist/state/Context.d.ts +8 -0
- package/dist/state/Context.js +17 -0
- package/dist/state/Context.js.map +1 -0
- package/dist/state/MessageRegistry.d.ts +1 -0
- package/dist/state/MessageRegistry.js +3 -0
- package/dist/state/MessageRegistry.js.map +1 -1
- package/dist/state/ModelRegistry.d.ts +1 -0
- package/dist/state/ModelRegistry.js +9 -0
- package/dist/state/ModelRegistry.js.map +1 -1
- package/dist/state/StateMap.d.ts +3 -2
- package/dist/state/StateMap.js +8 -0
- package/dist/state/StateMap.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +2 -0
- package/package.json +3 -4
- package/run.ts +39 -0
- package/state/Context.ts +19 -0
- package/state/MessageRegistry.ts +4 -0
- package/state/ModelRegistry.ts +10 -0
- package/state/StateMap.ts +11 -2
- package/L/state.ts +0 -20
- package/dist/L/state.d.ts +0 -7
- package/dist/L/state.js +0 -14
- package/dist/L/state.js.map +0 -1
- package/dist/state/Counter.d.ts +0 -6
- package/dist/state/Counter.js +0 -13
- package/dist/state/Counter.js.map +0 -1
- package/dist/state/DefaultStateMap.d.ts +0 -4
- package/dist/state/DefaultStateMap.js +0 -14
- package/dist/state/DefaultStateMap.js.map +0 -1
- package/state/Counter.ts +0 -11
- package/state/DefaultStateMap.ts +0 -14
package/dist/LEvent.js
CHANGED
|
@@ -1,4 +1,48 @@
|
|
|
1
|
+
import { EventBase } from "./EventBase.js";
|
|
1
2
|
export const LEventTag = Symbol.for("liminal/LEvent");
|
|
3
|
+
export class InferenceRequested extends EventBase {
|
|
4
|
+
requestId;
|
|
5
|
+
constructor(requestId, schema) {
|
|
6
|
+
super(LEventTag, "inference_requested");
|
|
7
|
+
this.requestId = requestId;
|
|
8
|
+
if (schema) {
|
|
9
|
+
this.schema = schema;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class Inferred extends EventBase {
|
|
14
|
+
requestId;
|
|
15
|
+
inference;
|
|
16
|
+
constructor(requestId, inference) {
|
|
17
|
+
super(LEventTag, "inferred");
|
|
18
|
+
this.requestId = requestId;
|
|
19
|
+
this.inference = inference;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class MessageAppended extends EventBase {
|
|
23
|
+
message;
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(LEventTag, "message_appended");
|
|
26
|
+
this.message = message;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class FiberCreated extends EventBase {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(LEventTag, "fiber_created");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class FiberStarted extends EventBase {
|
|
35
|
+
constructor() {
|
|
36
|
+
super(LEventTag, "fiber_started");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class FiberResolved extends EventBase {
|
|
40
|
+
value;
|
|
41
|
+
constructor(value) {
|
|
42
|
+
super(LEventTag, "fiber_resolved");
|
|
43
|
+
this.value = value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
2
46
|
export function isLEvent(value) {
|
|
3
47
|
return typeof value === "object" && value !== null && LEventTag in value;
|
|
4
48
|
}
|
package/dist/LEvent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LEvent.js","sourceRoot":"","sources":["../LEvent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LEvent.js","sourceRoot":"","sources":["../LEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK1C,MAAM,CAAC,MAAM,SAAS,GAAkB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAGpE,MAAM,OAAO,kBAAmB,SAAQ,SAA2C;IAGtE;IADX,YACW,SAAiB,EAC1B,MAAiC;QAEjC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;QAH9B,cAAS,GAAT,SAAS,CAAQ;QAI1B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,SAAgC;IAEjD;IACA;IAFX,YACW,SAAiB,EACjB,SAAiB;QAE1B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAHnB,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAQ;IAG5B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,SAAwC;IACtD;IAArB,YAAqB,OAAgB;QACnC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QADjB,YAAO,GAAP,OAAO,CAAS;IAErC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAqC;IACrE;QACE,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IACnC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAqC;IACrE;QACE,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IACnC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,SAAsC;IAClD;IAArB,YAAqB,KAAU;QAC7B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;QADf,UAAK,GAAL,KAAK,CAAK;IAE/B,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,CAAA;AAC1E,CAAC"}
|
package/dist/Rune.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export * as _util from "liminal-util";
|
|
2
2
|
export * from "./Agent.ts";
|
|
3
|
+
export * from "./EventBase.ts";
|
|
3
4
|
export * from "./Fiber.ts";
|
|
4
5
|
export * as L from "./L/L.ts";
|
|
5
6
|
export * from "./LEvent.ts";
|
|
7
|
+
export * from "./Message.ts";
|
|
6
8
|
export * from "./Model.ts";
|
|
7
9
|
export * from "./Rune.ts";
|
|
8
10
|
export * from "./Runic.ts";
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export * as _util from "liminal-util";
|
|
2
2
|
export * from "./Agent.js";
|
|
3
|
+
export * from "./EventBase.js";
|
|
3
4
|
export * from "./Fiber.js";
|
|
4
5
|
export * as L from "./L/L.js";
|
|
5
6
|
export * from "./LEvent.js";
|
|
7
|
+
export * from "./Message.js";
|
|
6
8
|
export * from "./Model.js";
|
|
7
9
|
export * from "./Rune.js";
|
|
8
10
|
export * from "./Runic.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA"}
|
package/dist/run.d.ts
ADDED
package/dist/run.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Runic } from "./Runic.js";
|
|
2
|
+
import { context } from "./state/Context.js";
|
|
3
|
+
export async function run(runic, config) {
|
|
4
|
+
const { promise, resolve, reject } = Promise.withResolvers();
|
|
5
|
+
if (config.signal) {
|
|
6
|
+
if (config.signal.aborted) {
|
|
7
|
+
reject(config.signal.reason);
|
|
8
|
+
return await promise;
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
config.signal.addEventListener("abort", () => {
|
|
12
|
+
reject(config.signal?.reason);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
queueMicrotask(() => context.fork(async () => {
|
|
17
|
+
const iterator = Runic.unwrap(runic);
|
|
18
|
+
let nextArg;
|
|
19
|
+
try {
|
|
20
|
+
let current = await iterator.next(config);
|
|
21
|
+
while (!current.done) {
|
|
22
|
+
const rune = current.value;
|
|
23
|
+
nextArg = await rune(config);
|
|
24
|
+
current = await iterator.next(nextArg);
|
|
25
|
+
}
|
|
26
|
+
const { value } = current;
|
|
27
|
+
resolve(value);
|
|
28
|
+
}
|
|
29
|
+
catch (reason) {
|
|
30
|
+
reject(reason);
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
return await promise;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,KAAQ,EACR,MAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAc,CAAA;IACxE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC5B,OAAO,MAAM,OAAO,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,cAAc,CAAC,GAAG,EAAE,CAClB,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,OAAY,CAAA;QAChB,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAA;gBAC1B,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5B,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxC,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;YACzB,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC;QAAC,OAAO,MAAe,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,CAAA;QAChB,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,MAAM,OAAO,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { StateMap } from "./StateMap";
|
|
3
|
+
declare class Context extends AsyncLocalStorage<StateMap> {
|
|
4
|
+
get(): StateMap;
|
|
5
|
+
fork<T>(f: () => Promise<T>): Promise<T>;
|
|
6
|
+
}
|
|
7
|
+
export declare const context: Context;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { StateMap } from "./StateMap";
|
|
3
|
+
class Context extends AsyncLocalStorage {
|
|
4
|
+
get() {
|
|
5
|
+
let state = this.getStore();
|
|
6
|
+
if (!state) {
|
|
7
|
+
state = new StateMap();
|
|
8
|
+
this.enterWith(state);
|
|
9
|
+
}
|
|
10
|
+
return state;
|
|
11
|
+
}
|
|
12
|
+
fork(f) {
|
|
13
|
+
return this.run(this.get(), f);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export const context = new Context();
|
|
17
|
+
//# sourceMappingURL=Context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../../state/Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,OAAQ,SAAQ,iBAA2B;IAC/C,GAAG;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAA;YACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAI,CAAmB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// TODO: marks and tags
|
|
2
2
|
export class MessageRegistry {
|
|
3
|
+
static make(messageRegistry) {
|
|
4
|
+
return new MessageRegistry(messageRegistry?.messages ? [...messageRegistry?.messages] : undefined);
|
|
5
|
+
}
|
|
3
6
|
messages;
|
|
4
7
|
constructor(messages = []) {
|
|
5
8
|
this.messages = Array.from(messages);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageRegistry.js","sourceRoot":"","sources":["../../state/MessageRegistry.ts"],"names":[],"mappings":"AAEA,uBAAuB;AACvB,MAAM,OAAO,eAAe;IAC1B,QAAQ,CAAgB;IACxB,YAAY,WAA8B,EAAE;QAC1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"MessageRegistry.js","sourceRoot":"","sources":["../../state/MessageRegistry.ts"],"names":[],"mappings":"AAEA,uBAAuB;AACvB,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,IAAI,CAAC,eAAiC;QAC3C,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACpG,CAAC;IAED,QAAQ,CAAgB;IACxB,YAAY,WAA8B,EAAE;QAC1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Model } from "../Model.ts";
|
|
2
2
|
/** An intrusive list for storing `Model`s. */
|
|
3
3
|
export declare class ModelRegistry {
|
|
4
|
+
static make(modelRegistry?: ModelRegistry): ModelRegistry;
|
|
4
5
|
head?: ModelRegistryNode | undefined;
|
|
5
6
|
tail?: ModelRegistryNode | undefined;
|
|
6
7
|
clone(): ModelRegistry;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
/** An intrusive list for storing `Model`s. */
|
|
2
2
|
export class ModelRegistry {
|
|
3
|
+
static make(modelRegistry) {
|
|
4
|
+
const instance = new ModelRegistry();
|
|
5
|
+
if (modelRegistry) {
|
|
6
|
+
for (let node = modelRegistry.head; node; node = node.next) {
|
|
7
|
+
instance.register(node.model);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return instance;
|
|
11
|
+
}
|
|
3
12
|
clone() {
|
|
4
13
|
const clone = new ModelRegistry();
|
|
5
14
|
for (let node = this?.head; node; node = node.next) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../../state/ModelRegistry.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../../state/ModelRegistry.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,IAAI,CAAC,aAA6B;QACvC,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;QACpC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAKD,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAA;IACzB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,MAAM,IAAI,GAAsB;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,KAAK;SACb,CAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAuB;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACnC,CAAC;CACF"}
|
package/dist/state/StateMap.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export declare class StateMap extends Map<
|
|
1
|
+
export declare class StateMap extends Map<StateFactory, Cloneable> {
|
|
2
2
|
clone(): StateMap;
|
|
3
|
+
getOrInit<T extends Cloneable>(factory: StateFactory<T>): T;
|
|
3
4
|
}
|
|
4
|
-
export type
|
|
5
|
+
export type StateFactory<T = any> = (instance?: T) => T;
|
|
5
6
|
export interface Cloneable {
|
|
6
7
|
clone(): this;
|
|
7
8
|
}
|
package/dist/state/StateMap.js
CHANGED
|
@@ -6,5 +6,13 @@ export class StateMap extends Map {
|
|
|
6
6
|
}
|
|
7
7
|
return clone;
|
|
8
8
|
}
|
|
9
|
+
getOrInit(factory) {
|
|
10
|
+
let instance = this.get(factory);
|
|
11
|
+
if (!instance) {
|
|
12
|
+
instance = factory();
|
|
13
|
+
this.set(factory, instance);
|
|
14
|
+
}
|
|
15
|
+
return instance;
|
|
16
|
+
}
|
|
9
17
|
}
|
|
10
18
|
//# sourceMappingURL=StateMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateMap.js","sourceRoot":"","sources":["../../state/StateMap.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,
|
|
1
|
+
{"version":3,"file":"StateMap.js","sourceRoot":"","sources":["../../state/StateMap.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,GAA4B;IACxD,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS,CAAsB,OAAwB;QACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,OAAO,EAAE,CAAA;YACpB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,QAAiB,CAAA;IAC1B,CAAC;CACF"}
|