callbag-state
Advanced tools
| export { makeState } from './state'; | ||
| export { trace, change, postTrace } from './trace'; | ||
| export { Change, ChangeTrace, ChangeTraceLeaf, ChangeTraceNode, isLeaf, Downstream, Upstream, State, isState } from './types'; | ||
| export declare function state<T>(t: T | undefined): import("./types").State<T>; | ||
| export declare function state<T>(t: T): import("./types").State<T>; | ||
| export default state; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAoC;AAA3B,kGAAA,SAAS,OAAA;AAClB,iCAAmD;AAA1C,8FAAA,KAAK,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,kGAAA,SAAS,OAAA;AACjC,iCAKiB;AAHmB,+FAAA,MAAM,OAAA;AAEjC,gGAAA,OAAO,OAAA;AAIhB,iCAAoC;AACpC,0CAAyC;AAGzC,SAAgB,KAAK,CAAI,CAAgB;IACvC,IAAM,EAAE,GAAG,iBAAO,EAAK,CAAC;IACxB,OAAO,iBAAS,CAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAHD,sBAGC;AAGD,kBAAe,KAAK,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAoC;AAA3B,kGAAA,SAAS,OAAA;AAClB,iCAAmD;AAA1C,8FAAA,KAAK,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,kGAAA,SAAS,OAAA;AACjC,iCAKiB;AAHmB,+FAAA,MAAM,OAAA;AAEjC,gGAAA,OAAO,OAAA;AAIhB,iCAAoC;AACpC,0CAAyC;AAGzC,SAAgB,KAAK,CAAI,CAAI;IAC3B,IAAM,EAAE,GAAG,iBAAO,EAAK,CAAC;IACxB,OAAO,iBAAS,CAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAHD,sBAGC;AAGD,kBAAe,KAAK,CAAC"} |
@@ -1,2 +0,3 @@ | ||
| import { State, Downstream, Upstream } from './types'; | ||
| export declare function makeState<T>(initial: T | undefined, downstream: Downstream<T>, upstream: Upstream<T>): State<T>; | ||
| import { State, Downstream, Upstream, SubState } from './types'; | ||
| export declare function makeState<T>(initial: T, downstream: Downstream<T>, upstream: Upstream<T>): State<T>; | ||
| export declare function makeState<T, K extends keyof T>(initial: T[K] | undefined, downstream: Downstream<T[K] | undefined>, upstream: Upstream<T[K]>): SubState<T, K>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":";;;AAEA,yCAAyD;AACzD,iCAAsG;AACtG,8CAA6C;AAC7C,iCAAoC;AAMpC,SAAgB,SAAS,CACvB,OAAU,EACV,UAAyB,EACzB,QAAqB;IAErB,IAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,IAAI,QAAQ,GAAQ,SAAS,CAAC;IAE9B,IAAM,SAAS,GAAG,UAAC,GAAS;QAC1B,qBAAS,CAAC,YAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,IAAa,EAAE,CAAO;QACzC,IAAI,IAAI,KAAK,cAAM,EAAE;YACnB,IAAM,MAAI,GAAG,CAAoB,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,MAAI,CAAC,CAAC;YAEjB,MAAI,CAAC,cAAM,EAAE,UAAC,CAAU;gBACtB,IAAI,CAAC,KAAK,YAAI,EAAE;oBACd,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAI,CAAC,CAAC;oBAClC,IAAI,KAAK,IAAI,CAAC,EAAE;wBAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;qBAAE;oBAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,EAAE;wBAAE,QAAQ,CAAC,YAAI,CAAC,CAAC;qBAAE;iBACxD;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,UAAU,CAAC,cAAM,EAAE,UAAC,CAAU,EAAE,EAAQ;oBACtC,IAAI,CAAC,KAAK,cAAM,EAAE;wBAAE,QAAQ,GAAG,EAAE,CAAC;qBAAE;yBAC/B,IAAI,CAAC,KAAK,aAAK,EAAE;wBACpB,IAAM,MAAM,GAAG,iBAAS,CAAI,EAAE,CAAC,CAAC;wBAChC,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;4BAAE,KAAK,GAAG,MAAM,CAAC,KAAO,CAAC;yBAAE;wBACvD,qBAAS,CAAC,aAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;qBACjC;yBAAM,IAAI,CAAC,KAAK,YAAI,EAAE;wBAAE,SAAS,CAAC,EAAE,CAAC,CAAC;qBAAE;gBAC3C,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC,CAAC;IAEF,IAAM,MAAM,GAAG,UAAC,IAAa,EAAE,CAAO;QACpC,IAAI,IAAI,KAAK,cAAM,EAAE;YACnB,IAAM,MAAI,GAAG,CAAwB,CAAC;YACtC,WAAW,CAAC,cAAM,EAAE,UAAC,CAAU,EAAE,EAAQ;gBACvC,IAAI,CAAC,KAAK,cAAM,EAAE;oBAAE,MAAI,CAAC,cAAM,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAI,CAAC,aAAK,EAAE,KAAK,CAAC,CAAC;iBAAE;qBACtD,IAAI,CAAC,KAAK,aAAK,EAAE;oBAAE,MAAI,CAAC,aAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;iBAAE;qBAC3C,IAAI,CAAC,KAAK,YAAI,EAAE;oBAAE,MAAI,CAAC,YAAI,EAAE,EAAE,CAAC,CAAC;iBAAE;YAC1C,CAAC,CAAC,CAAC;SACJ;aACI,IAAI,IAAI,KAAK,aAAK,EAAE;YAAE,QAAQ,CAAC,aAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAC,CAAC,CAAC;SAAE;aACpF,IAAI,IAAI,KAAK,YAAI,EAAE;YACtB,QAAQ,CAAC,YAAI,EAAE,CAAC,CAAC,CAAC;YAClB,SAAS,CAAC,CAAC,CAAC,CAAC;SACd;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,GAAG,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC;IACzB,MAAM,CAAC,GAAG,GAAG,UAAC,CAAI,IAAK,OAAA,MAAM,CAAC,aAAK,EAAE,CAAC,CAAC,EAAhB,CAAgB,CAAC;IACxC,MAAM,CAAC,KAAK,GAAG,cAAM,OAAA,MAAM,CAAC,YAAI,CAAC,EAAZ,CAAY,CAAC;IAClC,MAAM,CAAC,UAAU,GAAG,cAAM,OAAA,WAAW,EAAX,CAAW,CAAC;IACtC,MAAM,CAAC,QAAQ,GAAG,cAAM,OAAA,QAAQ,EAAR,CAAQ,CAAC;IACjC,MAAM,CAAC,GAAG,GAAG,UAAoB,CAAI;QACnC,IAAM,IAAI,GAAmB,SAAS,CACpC,KAAK,CAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAC3B,yBAAa,CAAC,WAAW,EAAE,CAAC,EAAE,cAAM,OAAA,IAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,EAC/C,uBAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAChC,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAzED,8BAyEC"} |
+11
-3
@@ -22,4 +22,12 @@ import { Source, Sink, START, DATA, END, Callbag } from 'callbag'; | ||
| export declare type MsgType = START | DATA | END; | ||
| export declare type State<T> = Source<T | undefined> & Sink<T> & { | ||
| get(): T | undefined; | ||
| export declare type SubState<T, K extends keyof T> = Source<T[K] | undefined> & Sink<T[K]> & { | ||
| get(): T[K] | undefined; | ||
| set(t: T[K]): void; | ||
| clear(): void; | ||
| downstream(): Downstream<T[K] | undefined>; | ||
| upstream(): Upstream<T[K]>; | ||
| sub<K2 extends keyof T[K]>(key: K2): SubState<T[K], K2>; | ||
| }; | ||
| export declare type State<T> = Source<T> & Sink<T> & { | ||
| get(): T; | ||
| set(t: T): void; | ||
@@ -29,3 +37,3 @@ clear(): void; | ||
| upstream(): Upstream<T>; | ||
| sub<K extends keyof T>(key: K): State<T[K]>; | ||
| sub<K extends keyof T>(key: K): SubState<T, K>; | ||
| }; | ||
@@ -32,0 +40,0 @@ export declare function isState<T>(cb: Callbag<any, T>): cb is State<T>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,MAAM,CAAI,CAA6B;IACrD,OAAO,CAAC,CAAC,IAAI,CAAE,CAAS,CAAC,IAAI,CAAC;AAChC,CAAC;AAFD,wBAEC;AAgBD,SAAgB,OAAO,CAAI,EAAmB;IAC5C,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WAClD,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,KAAK,IAAI,OAAQ,EAAU,CAAC,KAAK,KAAK,UAAU,IAAK,EAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;WAC7F,EAAU,CAAC,UAAU,IAAI,OAAQ,EAAU,CAAC,UAAU,KAAK,UAAU,IAAK,EAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;WAC5G,EAAU,CAAC,QAAQ,IAAI,OAAQ,EAAU,CAAC,QAAQ,KAAK,UAAU,IAAK,EAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;WACtG,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAC1F;AACL,CAAC;AATD,0BASC;AAEY,QAAA,MAAM,GAAG,CAAC,CAAC;AACX,QAAA,KAAK,GAAG,CAAC,CAAC;AACV,QAAA,IAAI,GAAG,CAAC,CAAC"} | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,MAAM,CAAI,CAA6B;IACrD,OAAO,CAAC,CAAC,IAAI,CAAE,CAAS,CAAC,IAAI,CAAC;AAChC,CAAC;AAFD,wBAEC;AAyBD,SAAgB,OAAO,CAAI,EAAmB;IAC5C,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WAClD,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,KAAK,IAAI,OAAQ,EAAU,CAAC,KAAK,KAAK,UAAU,IAAK,EAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;WAC7F,EAAU,CAAC,UAAU,IAAI,OAAQ,EAAU,CAAC,UAAU,KAAK,UAAU,IAAK,EAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;WAC5G,EAAU,CAAC,QAAQ,IAAI,OAAQ,EAAU,CAAC,QAAQ,KAAK,UAAU,IAAK,EAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;WACtG,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAC1F;AACL,CAAC;AATD,0BASC;AAEY,QAAA,MAAM,GAAG,CAAC,CAAC;AACX,QAAA,KAAK,GAAG,CAAC,CAAC;AACV,QAAA,IAAI,GAAG,CAAC,CAAC"} |
| export { makeState } from './state'; | ||
| export { trace, change, postTrace } from './trace'; | ||
| export { Change, ChangeTrace, ChangeTraceLeaf, ChangeTraceNode, isLeaf, Downstream, Upstream, State, isState } from './types'; | ||
| export declare function state<T>(t: T | undefined): import("./types").State<T>; | ||
| export declare function state<T>(t: T): import("./types").State<T>; | ||
| export default state; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAE6B,MAAM,EAEjC,OAAO,EACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,MAAM,UAAU,KAAK,CAAI,CAAgB;IACvC,MAAM,EAAE,GAAG,OAAO,EAAK,CAAC;IACxB,OAAO,SAAS,CAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAGD,eAAe,KAAK,CAAC","sourcesContent":["export { makeState } from './state';\nexport { trace, change, postTrace } from './trace';\nexport {\n Change, ChangeTrace,\n ChangeTraceLeaf, ChangeTraceNode, isLeaf,\n Downstream, Upstream,\n State, isState\n} from './types';\n\n\nimport { makeState } from './state';\nimport { bouncer } from './util/bouncer';\n\n\nexport function state<T>(t: T | undefined) {\n const _b = bouncer<T>();\n return makeState<T>(t, _b, _b);\n}\n\n\nexport default state;\n"]} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAE6B,MAAM,EAEjC,OAAO,EACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,MAAM,UAAU,KAAK,CAAI,CAAI;IAC3B,MAAM,EAAE,GAAG,OAAO,EAAK,CAAC;IACxB,OAAO,SAAS,CAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAGD,eAAe,KAAK,CAAC","sourcesContent":["export { makeState } from './state';\nexport { trace, change, postTrace } from './trace';\nexport {\n Change, ChangeTrace,\n ChangeTraceLeaf, ChangeTraceNode, isLeaf,\n Downstream, Upstream,\n State, isState\n} from './types';\n\n\nimport { makeState } from './state';\nimport { bouncer } from './util/bouncer';\n\n\nexport function state<T>(t: T) {\n const _b = bouncer<T>();\n return makeState<T>(t, _b, _b);\n}\n\n\nexport default state;\n"]} |
@@ -1,2 +0,3 @@ | ||
| import { State, Downstream, Upstream } from './types'; | ||
| export declare function makeState<T>(initial: T | undefined, downstream: Downstream<T>, upstream: Upstream<T>): State<T>; | ||
| import { State, Downstream, Upstream, SubState } from './types'; | ||
| export declare function makeState<T>(initial: T, downstream: Downstream<T>, upstream: Upstream<T>): State<T>; | ||
| export declare function makeState<T, K extends keyof T>(initial: T[K] | undefined, downstream: Downstream<T[K] | undefined>, upstream: Upstream<T[K]>): SubState<T, K>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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","sourcesContent":["import { Sink } from 'callbag';\n\nimport { subDownstream, subUpstream } from './substream';\nimport { State, Downstream, Upstream, MsgType, _Start, _Data, _End, Change } from './types';\nimport { broadcast } from './util/broadcast';\nimport { postTrace } from './trace';\n\n\nexport function makeState<T>(\n initial: T | undefined,\n downstream: Downstream<T>,\n upstream: Upstream<T>,\n): State<T> {\n const sinks: Sink<Change<T>>[] = [];\n let value = initial;\n let talkback: any = undefined;\n\n const terminate = (err?: any) => {\n broadcast(_End, err, sinks);\n sinks.length = 0;\n talkback = undefined;\n };\n\n const _downstream = (type: MsgType, m?: any) => {\n if (type === _Start) {\n const sink = m as Sink<Change<T>>;\n sinks.push(sink);\n\n sink(_Start, (t: MsgType) => {\n if (t === _End) {\n const index = sinks.indexOf(sink);\n if (index >= 0) { sinks.splice(index, 1); }\n if (sinks.length === 0 && talkback) { talkback(_End); }\n }\n });\n\n if (sinks.length === 1) {\n downstream(_Start, (t: MsgType, _m?: any) => {\n if (t === _Start) { talkback = _m; }\n else if (t === _Data) {\n const change = postTrace<T>(_m);\n if (change.value !== value) { value = change.value; }\n broadcast(_Data, change, sinks);\n } else if (t === _End) { terminate(_m); }\n });\n }\n }\n };\n\n const _state = (type: MsgType, m?: any) => {\n if (type === _Start) {\n const sink = m as Sink<T | undefined>;\n _downstream(_Start, (t: MsgType, _m?: any) => {\n if (t === _Start) { sink(_Start, _m); sink(_Data, value); }\n else if (t === _Data) { sink(_Data, _m.value); }\n else if (t === _End) { sink(_End, _m); }\n });\n }\n else if (type === _Data) { upstream(_Data, { value: m, trace: { from: value, to: m }}); }\n else if (type === _End) {\n upstream(_End, m);\n terminate(m);\n }\n };\n\n _state.get = () => value;\n _state.set = (v: T) => _state(_Data, v);\n _state.clear = () => _state(_End);\n _state.downstream = () => _downstream;\n _state.upstream = () => upstream;\n _state.sub = <K extends keyof T>(k: K) => {\n const _sub: State<T[K]> = makeState(\n value ? value[k] : undefined,\n subDownstream(_downstream, k, () => _sub.get()),\n subUpstream(upstream, k, value),\n );\n\n return _sub;\n };\n\n return _state;\n}\n"]} | ||
| {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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","sourcesContent":["import { Sink } from 'callbag';\n\nimport { subDownstream, subUpstream } from './substream';\nimport { State, Downstream, Upstream, MsgType, _Start, _Data, _End, Change, SubState } from './types';\nimport { broadcast } from './util/broadcast';\nimport { postTrace } from './trace';\n\n\nexport function makeState<T>(initial: T, downstream: Downstream<T>, upstream: Upstream<T>): State<T>;\nexport function makeState<T, K extends keyof T>\n (initial: T[K] | undefined, downstream: Downstream<T[K] | undefined>, upstream: Upstream<T[K]>): SubState<T, K>;\nexport function makeState<T>(\n initial: T,\n downstream: Downstream<T>,\n upstream: Upstream<T>,\n) {\n const sinks: Sink<Change<T>>[] = [];\n let value = initial;\n let talkback: any = undefined;\n\n const terminate = (err?: any) => {\n broadcast(_End, err, sinks);\n sinks.length = 0;\n talkback = undefined;\n };\n\n const _downstream = (type: MsgType, m?: any) => {\n if (type === _Start) {\n const sink = m as Sink<Change<T>>;\n sinks.push(sink);\n\n sink(_Start, (t: MsgType) => {\n if (t === _End) {\n const index = sinks.indexOf(sink);\n if (index >= 0) { sinks.splice(index, 1); }\n if (sinks.length === 0 && talkback) { talkback(_End); }\n }\n });\n\n if (sinks.length === 1) {\n downstream(_Start, (t: MsgType, _m?: any) => {\n if (t === _Start) { talkback = _m; }\n else if (t === _Data) {\n const change = postTrace<T>(_m);\n if (change.value !== value) { value = change.value!!; }\n broadcast(_Data, change, sinks);\n } else if (t === _End) { terminate(_m); }\n });\n }\n }\n };\n\n const _state = (type: MsgType, m?: any) => {\n if (type === _Start) {\n const sink = m as Sink<T | undefined>;\n _downstream(_Start, (t: MsgType, _m?: any) => {\n if (t === _Start) { sink(_Start, _m); sink(_Data, value); }\n else if (t === _Data) { sink(_Data, _m.value); }\n else if (t === _End) { sink(_End, _m); }\n });\n }\n else if (type === _Data) { upstream(_Data, { value: m, trace: { from: value, to: m }}); }\n else if (type === _End) {\n upstream(_End, m);\n terminate(m);\n }\n };\n\n _state.get = () => value;\n _state.set = (v: T) => _state(_Data, v);\n _state.clear = () => _state(_End);\n _state.downstream = () => _downstream;\n _state.upstream = () => upstream;\n _state.sub = <K extends keyof T>(k: K) => {\n const _sub: SubState<T, K> = makeState(\n value? value[k] : undefined,\n subDownstream(_downstream, k, () => _sub.get()),\n subUpstream(upstream, k, value),\n );\n\n return _sub;\n };\n\n return _state;\n}\n"]} |
+11
-3
@@ -22,4 +22,12 @@ import { Source, Sink, START, DATA, END, Callbag } from 'callbag'; | ||
| export declare type MsgType = START | DATA | END; | ||
| export declare type State<T> = Source<T | undefined> & Sink<T> & { | ||
| get(): T | undefined; | ||
| export declare type SubState<T, K extends keyof T> = Source<T[K] | undefined> & Sink<T[K]> & { | ||
| get(): T[K] | undefined; | ||
| set(t: T[K]): void; | ||
| clear(): void; | ||
| downstream(): Downstream<T[K] | undefined>; | ||
| upstream(): Upstream<T[K]>; | ||
| sub<K2 extends keyof T[K]>(key: K2): SubState<T[K], K2>; | ||
| }; | ||
| export declare type State<T> = Source<T> & Sink<T> & { | ||
| get(): T; | ||
| set(t: T): void; | ||
@@ -29,3 +37,3 @@ clear(): void; | ||
| upstream(): Upstream<T>; | ||
| sub<K extends keyof T>(key: K): State<T[K]>; | ||
| sub<K extends keyof T>(key: K): SubState<T, K>; | ||
| }; | ||
@@ -32,0 +40,0 @@ export declare function isState<T>(cb: Callbag<any, T>): cb is State<T>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,MAAM,CAAI,CAA6B;IACrD,OAAO,CAAC,CAAC,IAAI,CAAE,CAAS,CAAC,IAAI,CAAC;AAChC,CAAC;AAgBD,MAAM,UAAU,OAAO,CAAI,EAAmB;IAC5C,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WAClD,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,KAAK,IAAI,OAAQ,EAAU,CAAC,KAAK,KAAK,UAAU,IAAK,EAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;WAC7F,EAAU,CAAC,UAAU,IAAI,OAAQ,EAAU,CAAC,UAAU,KAAK,UAAU,IAAK,EAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;WAC5G,EAAU,CAAC,QAAQ,IAAI,OAAQ,EAAU,CAAC,QAAQ,KAAK,UAAU,IAAK,EAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;WACtG,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAC1F;AACL,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;AACvB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC","sourcesContent":["import { Source, Sink, START, DATA, END, Callbag } from 'callbag';\n\n\nexport type ChangeTraceLeaf<T> = {\n from: T | undefined;\n to: T | undefined;\n};\n\nexport type ChangeTraceNode<T> = {\n subs: (T extends any[] ? {\n [index: number]: ChangeTrace<T[number]> } :\n Partial<{[K in keyof T]: ChangeTrace<T[K]>}>) | {}\n};\n\nexport type ChangeTrace<T> = ChangeTraceLeaf<T> | ChangeTraceNode<T>;\n\nexport interface Change<T> {\n value: T | undefined;\n trace?: ChangeTrace<T> | undefined;\n}\n\nexport function isLeaf<T>(c: ChangeTrace<T> | undefined): c is ChangeTraceLeaf<T> | undefined {\n return !c || !(c as any).subs;\n}\n\nexport type Downstream<T> = Source<Change<T>>;\nexport type Upstream<T> = Sink<Change<T>>;\n\nexport type MsgType = START | DATA | END ;\n\nexport type State<T> = Source<T | undefined> & Sink<T> & {\n get(): T | undefined;\n set(t: T): void;\n clear(): void;\n downstream(): Downstream<T>;\n upstream(): Upstream<T>;\n sub<K extends keyof T>(key: K): State<T[K]>;\n};\n\nexport function isState<T>(cb: Callbag<any, T>): cb is State<T> {\n return cb && typeof cb === 'function' && cb.length === 2\n && (cb as any).get && typeof (cb as any).get === 'function' && (cb as any).get.length === 0\n && (cb as any).set && typeof (cb as any).set === 'function' && (cb as any).set.length === 1\n && (cb as any).clear && typeof (cb as any).clear === 'function' && (cb as any).clear.length === 0\n && (cb as any).downstream && typeof (cb as any).downstream === 'function' && (cb as any).downstream.length === 0\n && (cb as any).upstream && typeof (cb as any).upstream === 'function' && (cb as any).upstream.length === 0\n && (cb as any).sub && typeof (cb as any).sub === 'function' && (cb as any).sub.length === 1\n ;\n}\n\nexport const _Start = 0;\nexport const _Data = 1;\nexport const _End = 2;\n"]} | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,MAAM,CAAI,CAA6B;IACrD,OAAO,CAAC,CAAC,IAAI,CAAE,CAAS,CAAC,IAAI,CAAC;AAChC,CAAC;AAyBD,MAAM,UAAU,OAAO,CAAI,EAAmB;IAC5C,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WAClD,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;WACvF,EAAU,CAAC,KAAK,IAAI,OAAQ,EAAU,CAAC,KAAK,KAAK,UAAU,IAAK,EAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;WAC7F,EAAU,CAAC,UAAU,IAAI,OAAQ,EAAU,CAAC,UAAU,KAAK,UAAU,IAAK,EAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;WAC5G,EAAU,CAAC,QAAQ,IAAI,OAAQ,EAAU,CAAC,QAAQ,KAAK,UAAU,IAAK,EAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;WACtG,EAAU,CAAC,GAAG,IAAI,OAAQ,EAAU,CAAC,GAAG,KAAK,UAAU,IAAK,EAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAC1F;AACL,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;AACvB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC","sourcesContent":["import { Source, Sink, START, DATA, END, Callbag } from 'callbag';\n\n\nexport type ChangeTraceLeaf<T> = {\n from: T | undefined;\n to: T | undefined;\n};\n\nexport type ChangeTraceNode<T> = {\n subs: (T extends any[] ? {\n [index: number]: ChangeTrace<T[number]> } :\n Partial<{[K in keyof T]: ChangeTrace<T[K]>}>) | {}\n};\n\nexport type ChangeTrace<T> = ChangeTraceLeaf<T> | ChangeTraceNode<T>;\n\nexport interface Change<T> {\n value: T | undefined;\n trace?: ChangeTrace<T> | undefined;\n}\n\nexport function isLeaf<T>(c: ChangeTrace<T> | undefined): c is ChangeTraceLeaf<T> | undefined {\n return !c || !(c as any).subs;\n}\n\nexport type Downstream<T> = Source<Change<T>>;\nexport type Upstream<T> = Sink<Change<T>>;\n\nexport type MsgType = START | DATA | END ;\n\nexport type SubState<T, K extends keyof T> = Source<T[K] | undefined> & Sink<T[K]> & {\n get(): T[K] | undefined;\n set(t: T[K]): void;\n clear(): void;\n downstream(): Downstream<T[K] | undefined>;\n upstream(): Upstream<T[K]>;\n sub<K2 extends keyof T[K]>(key: K2): SubState<T[K], K2>;\n};\n\nexport type State<T> = Source<T> & Sink<T> & {\n get(): T;\n set(t: T): void;\n clear(): void;\n downstream(): Downstream<T>;\n upstream(): Upstream<T>;\n sub<K extends keyof T>(key: K): SubState<T, K>;\n};\n\nexport function isState<T>(cb: Callbag<any, T>): cb is State<T> {\n return cb && typeof cb === 'function' && cb.length === 2\n && (cb as any).get && typeof (cb as any).get === 'function' && (cb as any).get.length === 0\n && (cb as any).set && typeof (cb as any).set === 'function' && (cb as any).set.length === 1\n && (cb as any).clear && typeof (cb as any).clear === 'function' && (cb as any).clear.length === 0\n && (cb as any).downstream && typeof (cb as any).downstream === 'function' && (cb as any).downstream.length === 0\n && (cb as any).upstream && typeof (cb as any).upstream === 'function' && (cb as any).upstream.length === 0\n && (cb as any).sub && typeof (cb as any).sub === 'function' && (cb as any).sub.length === 1\n ;\n}\n\nexport const _Start = 0;\nexport const _Data = 1;\nexport const _End = 2;\n"]} |
+1
-1
| { | ||
| "name": "callbag-state", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "description": "Callbag-based State Management", | ||
@@ -5,0 +5,0 @@ "main": "dist/es5/index.js", |
75901
1.89%846
2.17%