@quenk/potoo 3.0.3-0 → 3.1.0-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.
Files changed (143) hide show
  1. package/lib/actor/address.d.ts +0 -4
  2. package/lib/actor/address.js +1 -6
  3. package/lib/actor/address.js.map +1 -1
  4. package/lib/actor/address.ts +0 -7
  5. package/lib/actor/flags.d.ts +7 -1
  6. package/lib/actor/flags.js +11 -5
  7. package/lib/actor/flags.js.map +1 -1
  8. package/lib/actor/flags.ts +11 -4
  9. package/lib/actor/process/index.d.ts +1 -1
  10. package/lib/actor/process/index.js +12 -13
  11. package/lib/actor/process/index.js.map +1 -1
  12. package/lib/actor/process/index.ts +23 -19
  13. package/lib/actor/process/script.js +6 -9
  14. package/lib/actor/process/script.js.map +1 -1
  15. package/lib/actor/process/script.ts +8 -19
  16. package/lib/actor/resident/api.d.ts +0 -6
  17. package/lib/actor/resident/api.ts +0 -8
  18. package/lib/actor/resident/case/function.d.ts +24 -0
  19. package/lib/actor/resident/case/function.js +35 -0
  20. package/lib/actor/resident/case/function.js.map +1 -0
  21. package/lib/actor/resident/case/function.ts +40 -0
  22. package/lib/actor/resident/{case.d.ts → case/index.d.ts} +18 -2
  23. package/lib/actor/resident/{case.js → case/index.js} +6 -2
  24. package/lib/actor/resident/case/index.js.map +1 -0
  25. package/lib/actor/resident/{case.ts → case/index.ts} +30 -3
  26. package/lib/actor/resident/immutable/callback.d.ts +9 -0
  27. package/lib/actor/resident/immutable/callback.js +32 -0
  28. package/lib/actor/resident/immutable/callback.js.map +1 -0
  29. package/lib/actor/resident/immutable/callback.ts +9 -0
  30. package/lib/actor/resident/immutable/index.d.ts +17 -0
  31. package/lib/actor/resident/immutable/index.js +50 -0
  32. package/lib/actor/resident/immutable/index.js.map +1 -0
  33. package/lib/actor/resident/immutable/index.ts +38 -0
  34. package/lib/actor/resident/index.d.ts +6 -44
  35. package/lib/actor/resident/index.js +29 -132
  36. package/lib/actor/resident/index.js.map +1 -1
  37. package/lib/actor/resident/index.ts +28 -143
  38. package/lib/actor/resident/mutable/index.d.ts +18 -0
  39. package/lib/actor/resident/mutable/index.js +47 -0
  40. package/lib/actor/resident/mutable/index.js.map +1 -0
  41. package/lib/actor/resident/mutable/index.ts +39 -0
  42. package/lib/actor/resident/scripts.d.ts +26 -71
  43. package/lib/actor/resident/scripts.js +132 -184
  44. package/lib/actor/resident/scripts.js.map +1 -1
  45. package/lib/actor/resident/scripts.ts +95 -192
  46. package/lib/actor/resident/task.d.ts +11 -0
  47. package/lib/actor/resident/task.js +37 -0
  48. package/lib/actor/resident/task.js.map +1 -0
  49. package/lib/actor/resident/task.ts +21 -0
  50. package/lib/actor/system/index.d.ts +7 -12
  51. package/lib/actor/system/index.ts +7 -14
  52. package/lib/actor/system/vm/index.d.ts +73 -62
  53. package/lib/actor/system/vm/index.js +237 -207
  54. package/lib/actor/system/vm/index.js.map +1 -1
  55. package/lib/actor/system/vm/index.ts +303 -290
  56. package/lib/actor/system/vm/runtime/context.d.ts +9 -1
  57. package/lib/actor/system/vm/runtime/context.js +2 -1
  58. package/lib/actor/system/vm/runtime/context.js.map +1 -1
  59. package/lib/actor/system/vm/runtime/context.ts +13 -1
  60. package/lib/actor/system/vm/runtime/error.d.ts +16 -2
  61. package/lib/actor/system/vm/runtime/error.js +38 -9
  62. package/lib/actor/system/vm/runtime/error.js.map +1 -1
  63. package/lib/actor/system/vm/runtime/error.ts +34 -4
  64. package/lib/actor/system/vm/runtime/heap/index.d.ts +1 -46
  65. package/lib/actor/system/vm/runtime/heap/index.js +0 -85
  66. package/lib/actor/system/vm/runtime/heap/index.js.map +1 -1
  67. package/lib/actor/system/vm/runtime/heap/index.ts +1 -126
  68. package/lib/actor/system/vm/runtime/heap/ledger.d.ts +111 -0
  69. package/lib/actor/system/vm/runtime/heap/ledger.js +94 -0
  70. package/lib/actor/system/vm/runtime/heap/ledger.js.map +1 -0
  71. package/lib/actor/system/vm/runtime/heap/ledger.ts +252 -0
  72. package/lib/actor/system/vm/runtime/index.d.ts +0 -70
  73. package/lib/actor/system/vm/runtime/index.js +1 -0
  74. package/lib/actor/system/vm/runtime/index.js.map +1 -1
  75. package/lib/actor/system/vm/runtime/index.ts +0 -84
  76. package/lib/actor/system/vm/runtime/op/actor.d.ts +12 -26
  77. package/lib/actor/system/vm/runtime/op/actor.js +5 -43
  78. package/lib/actor/system/vm/runtime/op/actor.js.map +1 -1
  79. package/lib/actor/system/vm/runtime/op/actor.ts +14 -67
  80. package/lib/actor/system/vm/runtime/op/base.d.ts +20 -19
  81. package/lib/actor/system/vm/runtime/op/base.js.map +1 -1
  82. package/lib/actor/system/vm/runtime/op/base.ts +20 -19
  83. package/lib/actor/system/vm/runtime/op/index.d.ts +5 -6
  84. package/lib/actor/system/vm/runtime/op/index.js +1 -13
  85. package/lib/actor/system/vm/runtime/op/index.js.map +1 -1
  86. package/lib/actor/system/vm/runtime/op/index.ts +33 -54
  87. package/lib/actor/system/vm/runtime/op/object.d.ts +5 -4
  88. package/lib/actor/system/vm/runtime/op/object.js +2 -2
  89. package/lib/actor/system/vm/runtime/op/object.js.map +1 -1
  90. package/lib/actor/system/vm/runtime/op/object.ts +7 -6
  91. package/lib/actor/system/vm/runtime/stack/frame.d.ts +32 -18
  92. package/lib/actor/system/vm/runtime/stack/frame.js +54 -21
  93. package/lib/actor/system/vm/runtime/stack/frame.js.map +1 -1
  94. package/lib/actor/system/vm/runtime/stack/frame.ts +97 -34
  95. package/lib/actor/system/vm/script/info.d.ts +23 -34
  96. package/lib/actor/system/vm/script/info.js +160 -102
  97. package/lib/actor/system/vm/script/info.js.map +1 -1
  98. package/lib/actor/system/vm/script/info.ts +36 -39
  99. package/lib/actor/system/vm/scripts/factory.d.ts +12 -0
  100. package/lib/actor/system/vm/scripts/factory.js +39 -0
  101. package/lib/actor/system/vm/scripts/factory.js.map +1 -0
  102. package/lib/actor/system/vm/scripts/factory.ts +49 -0
  103. package/lib/actor/system/vm/scripts/index.d.ts +32 -0
  104. package/lib/actor/system/vm/scripts/index.js +76 -0
  105. package/lib/actor/system/vm/scripts/index.js.map +1 -0
  106. package/lib/actor/system/vm/scripts/index.ts +53 -0
  107. package/lib/actor/system/vm/state.d.ts +32 -12
  108. package/lib/actor/system/vm/state.js +27 -12
  109. package/lib/actor/system/vm/state.js.map +1 -1
  110. package/lib/actor/system/vm/state.ts +49 -20
  111. package/lib/actor/system/vm/thread/index.d.ts +113 -0
  112. package/lib/actor/system/vm/thread/index.js +9 -0
  113. package/lib/actor/system/vm/thread/index.js.map +1 -0
  114. package/lib/actor/system/vm/thread/index.ts +135 -0
  115. package/lib/actor/system/vm/thread/shared/index.d.ts +41 -0
  116. package/lib/actor/system/vm/thread/shared/index.js +158 -0
  117. package/lib/actor/system/vm/thread/shared/index.js.map +1 -0
  118. package/lib/actor/system/vm/thread/shared/index.ts +187 -0
  119. package/lib/actor/system/vm/thread/shared/runner.d.ts +50 -0
  120. package/lib/actor/system/vm/thread/shared/runner.js +115 -0
  121. package/lib/actor/system/vm/thread/shared/runner.js.map +1 -0
  122. package/lib/actor/system/vm/thread/shared/runner.ts +143 -0
  123. package/lib/actor/system/vm/type.d.ts +41 -5
  124. package/lib/actor/system/vm/type.js.map +1 -1
  125. package/lib/actor/system/vm/type.ts +51 -5
  126. package/lib/actor/template.d.ts +0 -11
  127. package/lib/actor/template.js +1 -12
  128. package/lib/actor/template.js.map +1 -1
  129. package/lib/actor/template.ts +1 -16
  130. package/package.json +5 -5
  131. package/lib/actor/resident/case.js.map +0 -1
  132. package/lib/actor/system/vm/runtime/heap/object/es.d.ts +0 -35
  133. package/lib/actor/system/vm/runtime/heap/object/es.js +0 -107
  134. package/lib/actor/system/vm/runtime/heap/object/es.js.map +0 -1
  135. package/lib/actor/system/vm/runtime/heap/object/es.ts +0 -161
  136. package/lib/actor/system/vm/runtime/heap/object/index.d.ts +0 -37
  137. package/lib/actor/system/vm/runtime/heap/object/index.js +0 -3
  138. package/lib/actor/system/vm/runtime/heap/object/index.js.map +0 -1
  139. package/lib/actor/system/vm/runtime/heap/object/index.ts +0 -46
  140. package/lib/actor/system/vm/runtime/thread.d.ts +0 -32
  141. package/lib/actor/system/vm/runtime/thread.js +0 -114
  142. package/lib/actor/system/vm/runtime/thread.js.map +0 -1
  143. package/lib/actor/system/vm/runtime/thread.ts +0 -171
@@ -40,7 +40,3 @@ export declare const isChild: (parent: Address, child: Address) => boolean;
40
40
  * isGroup determines if an address is a group reference.
41
41
  */
42
42
  export declare const isGroup: (addr: Address) => boolean;
43
- /**
44
- * randomID generates a random id suitable for use by child actors.
45
- */
46
- export declare const randomID: () => string;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.randomID = exports.isGroup = exports.isChild = exports.getId = exports.getParent = exports.make = exports.isRestricted = exports.ADDRESS_RESTRICTED = exports.ADDRESS_EMPTY = exports.ADDRESS_SYSTEM = exports.ADDRESS_DISCARD = exports.SEPERATOR = void 0;
4
- var uuid = require("uuid");
3
+ exports.isGroup = exports.isChild = exports.getId = exports.getParent = exports.make = exports.isRestricted = exports.ADDRESS_RESTRICTED = exports.ADDRESS_EMPTY = exports.ADDRESS_SYSTEM = exports.ADDRESS_DISCARD = exports.SEPERATOR = void 0;
5
4
  var array_1 = require("@quenk/noni/lib/data/array");
6
5
  var string_1 = require("@quenk/noni/lib/data/string");
7
6
  exports.SEPERATOR = '/';
@@ -76,8 +75,4 @@ exports.isChild = function (parent, child) {
76
75
  exports.isGroup = function (addr) {
77
76
  return ((addr[0] === '$') && (addr !== '$'));
78
77
  };
79
- /**
80
- * randomID generates a random id suitable for use by child actors.
81
- */
82
- exports.randomID = function () { return uuid.v4().split('-').join(''); };
83
78
  //# sourceMappingURL=address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["address.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["address.ts"],"names":[],"mappings":";;;AAAA,oDAAkD;AAClD,sDAAyD;AAE5C,QAAA,SAAS,GAAG,GAAG,CAAC;AAEhB,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,aAAa,GAAG,EAAE,CAAC;AACnB,QAAA,kBAAkB,GAAG;IAC9B,uBAAe;IACf,sBAAc;IACd,iBAAS;CACZ,CAAC;AAmBF;;GAEG;AACU,QAAA,YAAY,GAAG,UAAC,EAAU;IACnC,OAAA,CAAC,CAAC,0BAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,iBAAS,CAAC,CAAC;AAA1E,CAA0E,CAAC;AAE/E;;GAEG;AACU,QAAA,IAAI,GAAG,UAAC,MAAe,EAAE,EAAU;IAC5C,OAAA,CAAC,CAAC,MAAM,KAAK,iBAAS,CAAC,IAAI,CAAC,MAAM,KAAK,qBAAa,CAAC,CAAC,CAAC,CAAC;QACpD,KAAG,MAAM,GAAG,EAAI,CAAC,CAAC;QAClB,CAAC,MAAM,KAAK,sBAAc,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC;YACJ,KAAG,MAAM,GAAG,iBAAS,GAAG,EAAI;AAJpC,CAIoC,CAAC;AAEzC;;GAEG;AACU,QAAA,SAAS,GAAG,UAAC,IAAa;IAEnC,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC;QAC1B,CAAC,IAAI,KAAK,qBAAa,CAAC;QACxB,CAAC,IAAI,KAAK,uBAAe,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAS,CAAC,CAAC,EAAE;QAErD,OAAO,sBAAc,CAAC;KAEzB;SAAM;QAEH,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAS,CAAC,CAAC;QAE/B,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;YAErC,OAAO,iBAAS,CAAC;SAEpB;aAAM;YAEH,IAAI,CAAC,GAAG,EAAE;iBACL,OAAO,EAAE;iBACT,KAAK,CAAC,CAAC,CAAC;iBACR,OAAO,EAAE;iBACT,IAAI,CAAC,iBAAS,CAAC,CAAC;YAErB,OAAO,CAAC,KAAK,qBAAa,CAAC,CAAC,CAAC,sBAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAGnD;KAEJ;AAEL,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,KAAK,GAAG,UAAC,IAAa;IAC/B,OAAA,CAAC,CAAC,IAAI,KAAK,sBAAc,CAAC;QACtB,CAAC,IAAI,KAAK,uBAAe,CAAC;QAC1B,CAAC,IAAI,KAAK,qBAAa,CAAC;QACxB,CAAC,IAAI,KAAK,iBAAS,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC;QACN,YAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAS,CAAC,CAAC;AAL/B,CAK+B,CAAC;AAEpC;;GAEG;AACU,QAAA,OAAO,GAAG,UAAC,MAAe,EAAE,KAAc;IACnD,OAAA,CAAC,MAAM,KAAK,sBAAc,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,mBAAU,CAAC,KAAK,EAAE,MAAM,CAAC;AAA9E,CAA8E,CAAC;AAEnF;;GAEG;AACU,QAAA,OAAO,GAAG,UAAC,IAAa;IACjC,OAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAArC,CAAqC,CAAA"}
@@ -1,5 +1,3 @@
1
- import * as uuid from 'uuid';
2
-
3
1
  import { tail } from '@quenk/noni/lib/data/array';
4
2
  import { startsWith } from '@quenk/noni/lib/data/string';
5
3
 
@@ -105,8 +103,3 @@ export const isChild = (parent: Address, child: Address): boolean =>
105
103
  */
106
104
  export const isGroup = (addr: Address): boolean =>
107
105
  ((addr[0] === '$') && (addr !== '$'))
108
-
109
- /**
110
- * randomID generates a random id suitable for use by child actors.
111
- */
112
- export const randomID = () => uuid.v4().split('-').join('');
@@ -1,7 +1,9 @@
1
1
  export declare const FLAG_IMMUTABLE = 1;
2
2
  export declare const FLAG_BUFFERED = 2;
3
- export declare const FLAG_TEMPORARY = 4;
3
+ export declare const FLAG_EXIT_AFTER_RECEIVE = 4;
4
4
  export declare const FLAG_ROUTER = 8;
5
+ export declare const FLAG_RESIDENT = 16;
6
+ export declare const FLAG_EXIT_AFTER_RUN = 32;
5
7
  /**
6
8
  * Flags allow an actor to enable or disable various features provided by
7
9
  * the system.
@@ -19,3 +21,7 @@ export declare const isBuffered: (f: Flags) => boolean;
19
21
  * isRouter flag test.
20
22
  */
21
23
  export declare const isRouter: (f: Flags) => boolean;
24
+ /**
25
+ * isResident flag test.
26
+ */
27
+ export declare const isResident: (f: Flags) => boolean;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isRouter = exports.isBuffered = exports.isImmutable = exports.FLAG_ROUTER = exports.FLAG_TEMPORARY = exports.FLAG_BUFFERED = exports.FLAG_IMMUTABLE = void 0;
4
- exports.FLAG_IMMUTABLE = 0x1;
5
- exports.FLAG_BUFFERED = 0x2;
6
- exports.FLAG_TEMPORARY = 0x4;
7
- exports.FLAG_ROUTER = 0x8;
3
+ exports.isResident = exports.isRouter = exports.isBuffered = exports.isImmutable = exports.FLAG_EXIT_AFTER_RUN = exports.FLAG_RESIDENT = exports.FLAG_ROUTER = exports.FLAG_EXIT_AFTER_RECEIVE = exports.FLAG_BUFFERED = exports.FLAG_IMMUTABLE = void 0;
4
+ exports.FLAG_IMMUTABLE = 1;
5
+ exports.FLAG_BUFFERED = 2;
6
+ exports.FLAG_EXIT_AFTER_RECEIVE = 4;
7
+ exports.FLAG_ROUTER = 8;
8
+ exports.FLAG_RESIDENT = 16;
9
+ exports.FLAG_EXIT_AFTER_RUN = 32;
8
10
  /**
9
11
  * isImmutable flag test.
10
12
  */
@@ -23,4 +25,8 @@ exports.isBuffered = function (f) {
23
25
  exports.isRouter = function (f) {
24
26
  return (f & exports.FLAG_ROUTER) === exports.FLAG_ROUTER;
25
27
  };
28
+ /**
29
+ * isResident flag test.
30
+ */
31
+ exports.isResident = function (f) { return (f & exports.FLAG_RESIDENT) === exports.FLAG_RESIDENT; };
26
32
  //# sourceMappingURL=flags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flags.js","sourceRoot":"","sources":["flags.ts"],"names":[],"mappings":";;;AACa,QAAA,cAAc,GAAG,GAAG,CAAC;AACrB,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,cAAc,GAAG,GAAG,CAAA;AACpB,QAAA,WAAW,GAAG,GAAG,CAAC;AAQ/B;;GAEG;AACU,QAAA,WAAW,GAAG,UAAC,CAAQ;IAChC,OAAA,CAAC,CAAC,GAAG,sBAAc,CAAC,KAAK,sBAAc;AAAvC,CAAuC,CAAC;AAE5C;;GAEG;AACU,QAAA,UAAU,GAAG,UAAC,CAAQ;IAC/B,OAAA,CAAC,CAAC,GAAG,qBAAa,CAAC,KAAK,qBAAa;AAArC,CAAqC,CAAC;AAE1C;;GAEG;AACU,QAAA,QAAQ,GAAG,UAAC,CAAQ;IAC7B,OAAA,CAAC,CAAC,GAAG,mBAAW,CAAC,KAAK,mBAAW;AAAjC,CAAiC,CAAC"}
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["flags.ts"],"names":[],"mappings":";;;AACa,QAAA,cAAc,GAAG,CAAC,CAAC;AACnB,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAC3B,QAAA,WAAW,GAAG,CAAC,CAAC;AAChB,QAAA,aAAa,GAAG,EAAE,CAAC;AACnB,QAAA,mBAAmB,GAAG,EAAE,CAAC;AAQtC;;GAEG;AACU,QAAA,WAAW,GAAG,UAAC,CAAQ;IAChC,OAAA,CAAC,CAAC,GAAG,sBAAc,CAAC,KAAK,sBAAc;AAAvC,CAAuC,CAAC;AAE5C;;GAEG;AACU,QAAA,UAAU,GAAG,UAAC,CAAQ;IAC/B,OAAA,CAAC,CAAC,GAAG,qBAAa,CAAC,KAAK,qBAAa;AAArC,CAAqC,CAAC;AAE1C;;GAEG;AACU,QAAA,QAAQ,GAAG,UAAC,CAAQ;IAC7B,OAAA,CAAC,CAAC,GAAG,mBAAW,CAAC,KAAK,mBAAW;AAAjC,CAAiC,CAAC;AAEtC;;GAEG;AACU,QAAA,UAAU,GAAG,UAAC,CAAQ,IAAK,OAAA,CAAC,CAAC,GAAG,qBAAa,CAAC,KAAK,qBAAa,EAArC,CAAqC,CAAC"}
@@ -1,8 +1,10 @@
1
1
 
2
- export const FLAG_IMMUTABLE = 0x1;
3
- export const FLAG_BUFFERED = 0x2;
4
- export const FLAG_TEMPORARY = 0x4
5
- export const FLAG_ROUTER = 0x8;
2
+ export const FLAG_IMMUTABLE = 1;
3
+ export const FLAG_BUFFERED = 2;
4
+ export const FLAG_EXIT_AFTER_RECEIVE = 4
5
+ export const FLAG_ROUTER = 8;
6
+ export const FLAG_RESIDENT = 16;
7
+ export const FLAG_EXIT_AFTER_RUN = 32;
6
8
 
7
9
  /**
8
10
  * Flags allow an actor to enable or disable various features provided by
@@ -27,3 +29,8 @@ export const isBuffered = (f: Flags) =>
27
29
  */
28
30
  export const isRouter = (f: Flags) =>
29
31
  (f & FLAG_ROUTER) === FLAG_ROUTER;
32
+
33
+ /**
34
+ * isResident flag test.
35
+ */
36
+ export const isResident = (f: Flags) => (f & FLAG_RESIDENT) === FLAG_RESIDENT;
@@ -1,6 +1,6 @@
1
1
  import { Type } from '@quenk/noni/lib/data/type';
2
- import { System } from '../system';
3
2
  import { Context } from '../system/vm/runtime/context';
3
+ import { System } from '../system';
4
4
  import { Envelope } from '../mailbox';
5
5
  import { Address } from '../address';
6
6
  import { Actor } from '../';
@@ -9,13 +9,13 @@ var op_1 = require("../system/vm/runtime/op");
9
9
  var address_1 = require("../address");
10
10
  var flags_1 = require("../flags");
11
11
  var address_2 = require("../address");
12
- var scripts_1 = require("../resident/scripts");
13
12
  exports.SCRIPT_PATH = __dirname + "/../../../lib/actor/process/script.js";
14
13
  var raiseShape = {
15
14
  code: op_1.RAISE,
16
15
  src: String,
17
16
  dest: String,
18
- error: type_1.Any
17
+ message: String,
18
+ stack: String
19
19
  };
20
20
  var tellShape = {
21
21
  code: op_1.SEND,
@@ -56,8 +56,7 @@ var Process = /** @class */ (function () {
56
56
  this.process.send(e);
57
57
  return this;
58
58
  };
59
- Process.prototype.notify = function () {
60
- };
59
+ Process.prototype.notify = function () { };
61
60
  Process.prototype.stop = function () {
62
61
  this.process.kill();
63
62
  };
@@ -65,7 +64,7 @@ var Process = /** @class */ (function () {
65
64
  var _this = this;
66
65
  this.self = function () { return addr; };
67
66
  var p = child_process_1.fork(path_1.resolve(this.script), [], spawnOpts(this));
68
- p.on('error', function (e) { return _this.system.exec(_this, new scripts_1.Raise(e.message)); });
67
+ p.on('error', function (e) { return _this.system.getPlatform().raise(_this, e); });
69
68
  //TODO: What should we do with invalid messages?
70
69
  p.on('message', function (m) {
71
70
  return match_1.match(m)
@@ -76,7 +75,7 @@ var Process = /** @class */ (function () {
76
75
  });
77
76
  p.on('exit', function () {
78
77
  _this.process = nullHandle;
79
- _this.system.exec(_this, new scripts_1.Kill(_this.self()));
78
+ _this.system.getPlatform().kill(_this, _this.self());
80
79
  });
81
80
  this.process = p;
82
81
  };
@@ -84,10 +83,8 @@ var Process = /** @class */ (function () {
84
83
  }());
85
84
  exports.Process = Process;
86
85
  var nullHandle = {
87
- send: function () {
88
- },
89
- kill: function () {
90
- }
86
+ send: function () { },
87
+ kill: function () { }
91
88
  };
92
89
  var spawnOpts = function (p) { return ({
93
90
  env: {
@@ -98,10 +95,12 @@ var spawnOpts = function (p) { return ({
98
95
  }
99
96
  }); };
100
97
  var handleTell = function (p) { return function (m) {
101
- return p.system.exec(p, new scripts_1.Tell(m.to, m.message));
98
+ return p.system.getPlatform().tell(m.to, m.message);
102
99
  }; };
103
100
  var handleRaise = function (p) { return function (_a) {
104
- var error = _a.error, src = _a.src;
105
- return p.system.exec(p, new scripts_1.Raise("[" + src + "]: " + error));
101
+ var message = _a.message, stack = _a.stack;
102
+ var err = new Error(message);
103
+ err.stack = stack;
104
+ p.system.getPlatform().raise(p, err);
106
105
  }; };
107
106
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,15 @@ import { fork } from 'child_process';
4
4
  import { match } from '@quenk/noni/lib/control/match';
5
5
  import { Any, Type } from '@quenk/noni/lib/data/type';
6
6
 
7
- import { System } from '../system';
8
7
  import { RAISE, SEND } from '../system/vm/runtime/op';
9
8
  import { Context } from '../system/vm/runtime/context';
9
+ import { PVM } from '../system/vm';
10
+ import { System } from '../system';
10
11
  import { Envelope } from '../mailbox';
11
12
  import { Message } from '../message';
12
13
  import { Address, getId } from '../address';
13
14
  import { FLAG_IMMUTABLE, FLAG_ROUTER } from '../flags';
14
15
  import { ADDRESS_DISCARD } from '../address';
15
- import { Tell, Raise, Kill } from '../resident/scripts';
16
16
  import { Actor } from '../';
17
17
 
18
18
  export const SCRIPT_PATH = `${__dirname}/../../../lib/actor/process/script.js`;
@@ -25,7 +25,9 @@ const raiseShape = {
25
25
 
26
26
  dest: String,
27
27
 
28
- error: Any
28
+ message: String,
29
+
30
+ stack: String
29
31
 
30
32
  }
31
33
 
@@ -55,7 +57,9 @@ interface TellMsg {
55
57
 
56
58
  interface RaiseMsg {
57
59
 
58
- error: { message: string },
60
+ message: string,
61
+
62
+ stack: string,
59
63
 
60
64
  src: string
61
65
 
@@ -119,9 +123,7 @@ export class Process implements Actor {
119
123
 
120
124
  }
121
125
 
122
- notify() {
123
-
124
- }
126
+ notify() { }
125
127
 
126
128
  stop() {
127
129
 
@@ -135,7 +137,7 @@ export class Process implements Actor {
135
137
 
136
138
  let p = fork(resolve(this.script), [], spawnOpts(this));
137
139
 
138
- p.on('error', e => this.system.exec(this, new Raise(e.message)));
140
+ p.on('error', e => this.system.getPlatform().raise(this, e));
139
141
 
140
142
  //TODO: What should we do with invalid messages?
141
143
  p.on('message', (m: Message) =>
@@ -149,7 +151,7 @@ export class Process implements Actor {
149
151
 
150
152
  this.process = nullHandle;
151
153
 
152
- this.system.exec(this, new Kill(this.self()));
154
+ this.system.getPlatform().kill(this, this.self());
153
155
 
154
156
  });
155
157
 
@@ -161,14 +163,9 @@ export class Process implements Actor {
161
163
 
162
164
  const nullHandle = {
163
165
 
164
- send() {
165
-
166
- },
167
-
168
- kill() {
166
+ send() { },
169
167
 
170
-
171
- }
168
+ kill() { }
172
169
 
173
170
  }
174
171
 
@@ -189,8 +186,15 @@ const spawnOpts = (p: Process) => ({
189
186
  });
190
187
 
191
188
  const handleTell = (p: Process) => (m: TellMsg) =>
192
- p.system.exec(p, new Tell(m.to, m.message));
189
+ (<PVM>p.system.getPlatform()).tell(m.to, m.message);
193
190
 
194
191
  const handleRaise =
195
- (p: Process) => ({ error, src }: RaiseMsg) =>
196
- p.system.exec(p, new Raise(`[${src}]: ${error}`));
192
+ (p: Process) => ({ message, stack }: RaiseMsg) => {
193
+
194
+ let err = new Error(message);
195
+
196
+ err.stack = stack;
197
+
198
+ p.system.getPlatform().raise(p, err);
199
+
200
+ }
@@ -4,7 +4,6 @@ var match_1 = require("@quenk/noni/lib/control/match");
4
4
  var type_1 = require("@quenk/noni/lib/data/type");
5
5
  var record_1 = require("@quenk/noni/lib/data/record");
6
6
  var json_1 = require("@quenk/noni/lib/data/json");
7
- var scripts_1 = require("../resident/scripts");
8
7
  var op_1 = require("../system/vm/runtime/op");
9
8
  var event_1 = require("../system/vm/event");
10
9
  var vm_1 = require("../system/vm");
@@ -26,11 +25,8 @@ var Sys = /** @class */ (function () {
26
25
  _a)
27
26
  }));
28
27
  }
29
- Sys.prototype.exec = function (i, s) {
30
- this.vm.exec(i, s);
31
- };
32
- Sys.prototype.execNow = function (i, s) {
33
- return this.vm.execNow(i, s);
28
+ Sys.prototype.getPlatform = function () {
29
+ return this.vm;
34
30
  };
35
31
  return Sys;
36
32
  }());
@@ -55,13 +51,14 @@ var main = function () {
55
51
  process.on('uncaughtException', function (e) {
56
52
  process.send({
57
53
  code: op_1.RAISE,
58
- error: e.stack,
54
+ message: e.message,
55
+ stack: e.stack,
59
56
  src: address,
60
57
  dest: address
61
58
  });
62
59
  process.exit(-1);
63
60
  });
64
- sys.vm.spawn({
61
+ sys.vm.spawn(sys.vm, {
65
62
  id: id,
66
63
  create: function (s) {
67
64
  //TODO: Handle invalid messages?
@@ -78,7 +75,7 @@ var main = function () {
78
75
  var filterTell = function (vm) {
79
76
  return function (_a) {
80
77
  var to = _a.to, message = _a.message;
81
- return vm.exec(vm, new scripts_1.Tell(to, message));
78
+ return vm.tell(to, message);
82
79
  };
83
80
  };
84
81
  main();
@@ -1 +1 @@
1
- {"version":3,"file":"script.js","sourceRoot":"","sources":["script.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["script.ts"],"names":[],"mappings":";;AAAA,uDAAsD;AACtD,kDAA0D;AAC1D,sDAAqD;AACrD,kDAAkD;AAElD,8CAAsD;AACtD,4CAAuD;AAEvD,mCAAmC;AAKnC,WAAW;AACX,gBAAgB;AAChB,qBAAqB;AACrB,gBAAgB;AAEhB;IAAA;;QAEI,OAAE,GAAQ,QAAG,CAAC,MAAM,CAAC,IAAI,EAAE,eAAM,CAAC,OAAO,EAAE,EAAE;YAEzC,EAAE;gBAEE,GAAC,yBAAiB,IAAG,UACjB,IAAa,EACb,CAAS,EACT,EAAW,EACX,OAAgB,IAAK,OAAW,OAAO,CAAC,IAAK,CAAC;oBAE1C,IAAI,EAAE,SAAI;oBACV,EAAE,IAAA;oBACF,IAAI,MAAA;oBACJ,OAAO,SAAA;iBAEV,CAAC,EAPmB,CAOnB;mBAET;SAEJ,CAAC,CAAC,CAAC;IAQR,CAAC;IANG,yBAAW,GAAX;QAEI,OAAO,IAAI,CAAC,EAAE,CAAC;IAEnB,CAAC;IAEL,UAAC;AAAD,CAAC,AA7BD,IA6BC;AAED,IAAM,EAAE,GAAW,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAE9C,IAAM,OAAO,GAAW,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAExD,IAAM,SAAS,GAAG;IAEd,EAAE,EAAE,MAAM;IAEV,IAAI,EAAE,MAAM;IAEZ,OAAO,EAAE,UAAG;CAEf,CAAA;AAED,IAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,IAAM,OAAO,GAAG;IAEZ,IAAI,eAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;QAEtC,IAAI,KAAK,GAAG,YAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE9C,IAAI,KAAK,CAAC,OAAO,EAAE;YAAE,OAAsB,KAAK,CAAC,SAAS,EAAE,CAAC;KAEhE;IAED,OAAO,WAAW,CAAC;AAEvB,CAAC,CAAA;AAED,IAAM,IAAI,GAAG;IAET,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEpB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAA,CAAC;QAElB,OAAO,CAAC,IAAK,CAAC;YAErB,IAAI,EAAE,UAAK;YACX,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,OAAO;SAEhB,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;QAEjB,EAAE,IAAA;QAEF,MAAM,EAAE,UAAC,CAAS;YAEd,gCAAgC;YAChC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,CAAU;gBAC7B,OAAA,aAAK,CAAC,CAAC,CAAC;qBACH,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;qBACrC,MAAM,CAAC,cAAQ,CAAC,CAAC;qBACjB,GAAG,EAAE;YAHV,CAGU,CAAC,CAAC;YAEhB,OAAO,OAAO,CAAS,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAErE,CAAC;KAEJ,CAAC,CAAC;AAEP,CAAC,CAAA;AAED,IAAM,UAAU,GAAG,UAAC,EAAO;IACvB,OAAA,UAAC,EAAiD;YAA/C,EAAE,QAAA,EAAE,OAAO,aAAA;QAAgD,OAAA,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;IAApB,CAAoB;AAAlF,CAAkF,CAAC;AAEvF,IAAI,EAAE,CAAC"}
@@ -1,20 +1,15 @@
1
1
  import { match } from '@quenk/noni/lib/control/match';
2
2
  import { isString, Any } from '@quenk/noni/lib/data/type';
3
- import { Maybe } from '@quenk/noni/lib/data/maybe';
4
3
  import { rmerge } from '@quenk/noni/lib/data/record';
5
4
  import { parse } from '@quenk/noni/lib/data/json';
6
5
 
7
- import { Tell } from '../resident/scripts';
8
6
  import { RAISE, SEND } from '../system/vm/runtime/op';
9
7
  import { EVENT_SEND_FAILED } from '../system/vm/event';
10
- import { PTValue } from '../system/vm/type';
11
- import { Script } from '../system/vm/script';
12
8
  import { Conf } from '../system/vm/conf';
13
9
  import { PVM } from '../system/vm';
14
10
  import { System } from '../system';
15
11
  import { Message } from '../message';
16
12
  import { Address } from '../address';
17
- import { Instance } from '../';
18
13
 
19
14
  //ENV vars:
20
15
  //POTOO_ACTOR_ID
@@ -23,7 +18,7 @@ import { Instance } from '../';
23
18
 
24
19
  class Sys {
25
20
 
26
- vm = PVM.create(this, rmerge(getConf(), {
21
+ vm: PVM = PVM.create(this, rmerge(getConf(), {
27
22
 
28
23
  on: {
29
24
 
@@ -44,15 +39,9 @@ class Sys {
44
39
 
45
40
  }));
46
41
 
47
- exec(i: Instance, s: Script) {
42
+ getPlatform() {
48
43
 
49
- this.vm.exec(i, s);
50
-
51
- }
52
-
53
- execNow(i: Instance, s: Script): Maybe<PTValue> {
54
-
55
- return this.vm.execNow(i, s);
44
+ return this.vm;
56
45
 
57
46
  }
58
47
 
@@ -97,7 +86,8 @@ const main = () => {
97
86
  (<Function>process.send)({
98
87
 
99
88
  code: RAISE,
100
- error: e.stack,
89
+ message: e.message,
90
+ stack: e.stack,
101
91
  src: address,
102
92
  dest: address
103
93
 
@@ -107,11 +97,11 @@ const main = () => {
107
97
 
108
98
  });
109
99
 
110
- sys.vm.spawn({
100
+ sys.vm.spawn(sys.vm, {
111
101
 
112
102
  id,
113
103
 
114
- create: (s:System) => {
104
+ create: (s: System) => {
115
105
 
116
106
  //TODO: Handle invalid messages?
117
107
  process.on('message', (m: Message) =>
@@ -129,7 +119,6 @@ const main = () => {
129
119
  }
130
120
 
131
121
  const filterTell = (vm: PVM) =>
132
- ({ to, message }: { to: string, from: string, message: Message }) =>
133
- vm.exec(vm, new Tell(to, message));
122
+ ({ to, message }: { to: string, message: Message }) => vm.tell(to, message);
134
123
 
135
124
  main();
@@ -1,7 +1,6 @@
1
1
  import { Err } from '@quenk/noni/lib/control/error';
2
2
  import { Address, AddressMap } from '../address';
3
3
  import { Spawnable, Templates } from '../template';
4
- import { Case } from './case';
5
4
  /**
6
5
  * Spawner is an object that can spawn a new actor.
7
6
  */
@@ -26,11 +25,6 @@ export interface Api extends Spawner {
26
25
  * tell a message to an actor address.
27
26
  */
28
27
  tell<M>(ref: string, m: M): Api;
29
- /**
30
- * select the next message to be processed, applying each Case
31
- * until one matches.
32
- */
33
- select<T>(c: Case<T>[]): Api;
34
28
  /**
35
29
  * raise an error triggering the systems error handling mechanism.
36
30
  */
@@ -3,8 +3,6 @@ import { Err } from '@quenk/noni/lib/control/error';
3
3
  import { Address, AddressMap } from '../address';
4
4
  import { Spawnable, Templates } from '../template';
5
5
 
6
- import { Case } from './case';
7
-
8
6
  /**
9
7
  * Spawner is an object that can spawn a new actor.
10
8
  */
@@ -39,12 +37,6 @@ export interface Api extends Spawner {
39
37
  */
40
38
  tell<M>(ref: string, m: M): Api;
41
39
 
42
- /**
43
- * select the next message to be processed, applying each Case
44
- * until one matches.
45
- */
46
- select<T>(c: Case<T>[]): Api;
47
-
48
40
  /**
49
41
  * raise an error triggering the systems error handling mechanism.
50
42
  */
@@ -0,0 +1,24 @@
1
+ import { Eff } from '../..';
2
+ import { Message } from '../../message';
3
+ import { Case } from './';
4
+ /**
5
+ * CaseFunction is a composite object for Case classes.
6
+ *
7
+ * It combines mutliple Case classes into one serving effectively as a pattern
8
+ * matching function.
9
+ */
10
+ export declare class CaseFunction<T> {
11
+ cases: Case<T>[];
12
+ constructor(cases: Case<T>[]);
13
+ /**
14
+ * test whether at least one of the underlying Case classes will handle the
15
+ * Message.
16
+ */
17
+ test(msg: Message): boolean;
18
+ /**
19
+ * apply the first Case class that will handle the provided Message.
20
+ *
21
+ * Throws if none of them will.
22
+ */
23
+ apply(msg: Message): Eff;
24
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CaseFunction = void 0;
4
+ /**
5
+ * CaseFunction is a composite object for Case classes.
6
+ *
7
+ * It combines mutliple Case classes into one serving effectively as a pattern
8
+ * matching function.
9
+ */
10
+ var CaseFunction = /** @class */ (function () {
11
+ function CaseFunction(cases) {
12
+ this.cases = cases;
13
+ }
14
+ /**
15
+ * test whether at least one of the underlying Case classes will handle the
16
+ * Message.
17
+ */
18
+ CaseFunction.prototype.test = function (msg) {
19
+ return this.cases.some(function (kase) { return kase.test(msg); });
20
+ };
21
+ /**
22
+ * apply the first Case class that will handle the provided Message.
23
+ *
24
+ * Throws if none of them will.
25
+ */
26
+ CaseFunction.prototype.apply = function (msg) {
27
+ var kase = this.cases.find(function (kase) { return kase.test(msg); });
28
+ if (!kase)
29
+ throw new Error("CaseFunction: No Case patterns match!");
30
+ return kase.apply(msg);
31
+ };
32
+ return CaseFunction;
33
+ }());
34
+ exports.CaseFunction = CaseFunction;
35
+ //# sourceMappingURL=function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["function.ts"],"names":[],"mappings":";;;AAIA;;;;;GAKG;AACH;IAEI,sBAAmB,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;IAAI,CAAC;IAExC;;;OAGG;IACH,2BAAI,GAAJ,UAAK,GAAY;QAEb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAd,CAAc,CAAC,CAAC;IAEnD,CAAC;IAED;;;;OAIG;IACH,4BAAK,GAAL,UAAM,GAAY;QAEd,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAd,CAAc,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3B,CAAC;IAEL,mBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,oCAAY"}
@@ -0,0 +1,40 @@
1
+ import { Eff } from '../..';
2
+ import { Message } from '../../message';
3
+ import { Case } from './';
4
+
5
+ /**
6
+ * CaseFunction is a composite object for Case classes.
7
+ *
8
+ * It combines mutliple Case classes into one serving effectively as a pattern
9
+ * matching function.
10
+ */
11
+ export class CaseFunction<T> {
12
+
13
+ constructor(public cases: Case<T>[]) { }
14
+
15
+ /**
16
+ * test whether at least one of the underlying Case classes will handle the
17
+ * Message.
18
+ */
19
+ test(msg: Message): boolean {
20
+
21
+ return this.cases.some(kase => kase.test(msg));
22
+
23
+ }
24
+
25
+ /**
26
+ * apply the first Case class that will handle the provided Message.
27
+ *
28
+ * Throws if none of them will.
29
+ */
30
+ apply(msg: Message): Eff {
31
+
32
+ let kase = this.cases.find(kase => kase.test(msg));
33
+
34
+ if (!kase) throw new Error(`CaseFunction: No Case patterns match!`);
35
+
36
+ return kase.apply(msg);
37
+
38
+ }
39
+
40
+ }
@@ -1,7 +1,7 @@
1
1
  import { Constructor } from '@quenk/noni/lib/data/type/constructor';
2
2
  import { Pattern } from '@quenk/noni/lib/data/type';
3
- import { Message } from '../message';
4
- import { Eff } from '../';
3
+ import { Message } from '../../message';
4
+ import { Eff } from '../../';
5
5
  export { Pattern };
6
6
  /**
7
7
  * Handler function type for Cases.
@@ -33,6 +33,22 @@ export declare class Case<T> {
33
33
  */
34
34
  apply(m: Message): Eff;
35
35
  }
36
+ /**
37
+ * caseOf is a helper for constructing Case classes.
38
+ *
39
+ * It should be used instead of "new Case(...)"
40
+ */
41
+ export declare function caseOf(pattern: NumberConstructor, handler: (value: number) => void): Case<number>;
42
+ export declare function caseOf(pattern: BooleanConstructor, handler: (value: boolean) => void): Case<boolean>;
43
+ export declare function caseOf(pattern: StringConstructor, handler: (value: string) => void): Case<string>;
44
+ export declare function caseOf<T>(pattern: object, handler: (value: {
45
+ [P in keyof T]: Message;
46
+ }) => void): Case<object>;
47
+ export declare function caseOf(pattern: string, handler: (value: string) => void): Case<string>;
48
+ export declare function caseOf(pattern: number, handler: (value: number) => void): Case<number>;
49
+ export declare function caseOf(pattern: boolean, handler: (value: boolean) => void): Case<boolean>;
50
+ export declare function caseOf<T>(pattern: Constructor<T>, handler: (value: T) => void): Case<Constructor<T>>;
51
+ export declare function caseOf<T>(pattern: Pattern<T>, handler: Handler<T>): Case<Pattern<T>>;
36
52
  /**
37
53
  * Default matches any message value.
38
54
  */