@cratis/arc 20.24.14 → 20.26.1

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 (54) hide show
  1. package/dist/cjs/index.d.ts +2 -1
  2. package/dist/cjs/index.d.ts.map +1 -1
  3. package/dist/cjs/index.js +8 -6
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/messaging/IMessenger.d.ts +10 -0
  6. package/dist/cjs/messaging/IMessenger.d.ts.map +1 -0
  7. package/dist/cjs/messaging/IMessenger.js +7 -0
  8. package/dist/cjs/messaging/IMessenger.js.map +1 -0
  9. package/dist/cjs/messaging/Message.d.ts +7 -0
  10. package/dist/cjs/messaging/Message.d.ts.map +1 -0
  11. package/dist/cjs/messaging/Message.js +13 -0
  12. package/dist/cjs/messaging/Message.js.map +1 -0
  13. package/dist/cjs/messaging/Messenger.d.ts +20 -0
  14. package/dist/cjs/messaging/Messenger.d.ts.map +1 -0
  15. package/dist/cjs/messaging/Messenger.js +67 -0
  16. package/dist/cjs/messaging/Messenger.js.map +1 -0
  17. package/dist/cjs/messaging/for_Messenger/when_scoping_messages.d.ts +2 -0
  18. package/dist/cjs/messaging/for_Messenger/when_scoping_messages.d.ts.map +1 -0
  19. package/dist/cjs/messaging/index.d.ts +4 -0
  20. package/dist/cjs/messaging/index.d.ts.map +1 -0
  21. package/dist/cjs/messaging/index.js +12 -0
  22. package/dist/cjs/messaging/index.js.map +1 -0
  23. package/dist/esm/index.d.ts +2 -1
  24. package/dist/esm/index.d.ts.map +1 -1
  25. package/dist/esm/index.js +8 -6
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/messaging/IMessenger.d.ts +10 -0
  28. package/dist/esm/messaging/IMessenger.d.ts.map +1 -0
  29. package/dist/esm/messaging/IMessenger.js +5 -0
  30. package/dist/esm/messaging/IMessenger.js.map +1 -0
  31. package/dist/esm/messaging/Message.d.ts +7 -0
  32. package/dist/esm/messaging/Message.d.ts.map +1 -0
  33. package/dist/esm/messaging/Message.js +11 -0
  34. package/dist/esm/messaging/Message.js.map +1 -0
  35. package/dist/esm/messaging/Messenger.d.ts +20 -0
  36. package/dist/esm/messaging/Messenger.d.ts.map +1 -0
  37. package/dist/esm/messaging/Messenger.js +65 -0
  38. package/dist/esm/messaging/Messenger.js.map +1 -0
  39. package/dist/esm/messaging/for_Messenger/when_scoping_messages.d.ts +2 -0
  40. package/dist/esm/messaging/for_Messenger/when_scoping_messages.d.ts.map +1 -0
  41. package/dist/esm/messaging/for_Messenger/when_scoping_messages.js +62 -0
  42. package/dist/esm/messaging/for_Messenger/when_scoping_messages.js.map +1 -0
  43. package/dist/esm/messaging/index.d.ts +4 -0
  44. package/dist/esm/messaging/index.d.ts.map +1 -0
  45. package/dist/esm/messaging/index.js +4 -0
  46. package/dist/esm/messaging/index.js.map +1 -0
  47. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  48. package/index.ts +2 -0
  49. package/messaging/IMessenger.ts +40 -0
  50. package/messaging/Message.ts +18 -0
  51. package/messaging/Messenger.ts +87 -0
  52. package/messaging/for_Messenger/when_scoping_messages.ts +74 -0
  53. package/messaging/index.ts +6 -0
  54. package/package.json +8 -2
@@ -1,5 +1,6 @@
1
1
  import * as commands from './commands';
2
2
  import * as identity from './identity';
3
+ import * as messaging from './messaging';
3
4
  import * as queries from './queries';
4
5
  import * as validation from './validation';
5
6
  import * as reflection from './reflection';
@@ -8,5 +9,5 @@ export * from './deepEqual';
8
9
  export * from './Globals';
9
10
  export * from './ICanBeConfigured';
10
11
  export * from './GetHttpHeaders';
11
- export { commands, identity, queries, validation, reflection, };
12
+ export { commands, identity, messaging, queries, validation, reflection, };
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,GACb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,GACb,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -2,9 +2,10 @@
2
2
 
3
3
  var index = require('./commands/index.js');
4
4
  var index$1 = require('./identity/index.js');
5
- var index$2 = require('./queries/index.js');
6
- var index$4 = require('./validation/index.js');
7
- var index$3 = require('./reflection/index.js');
5
+ var index$2 = require('./messaging/index.js');
6
+ var index$3 = require('./queries/index.js');
7
+ var index$5 = require('./validation/index.js');
8
+ var index$4 = require('./reflection/index.js');
8
9
  var joinPaths = require('./joinPaths.js');
9
10
  var deepEqual = require('./deepEqual.js');
10
11
  var Globals = require('./Globals.js');
@@ -13,9 +14,10 @@ var Globals = require('./Globals.js');
13
14
 
14
15
  exports.commands = index;
15
16
  exports.identity = index$1;
16
- exports.queries = index$2;
17
- exports.validation = index$4;
18
- exports.reflection = index$3;
17
+ exports.messaging = index$2;
18
+ exports.queries = index$3;
19
+ exports.validation = index$5;
20
+ exports.reflection = index$4;
19
21
  exports.joinPaths = joinPaths.joinPaths;
20
22
  exports.deepEqual = deepEqual.deepEqual;
21
23
  exports.Globals = Globals.Globals;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,10 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ import { Subscription } from 'rxjs';
3
+ export type MessageHandler<T> = (message: T) => void;
4
+ export declare abstract class IMessenger {
5
+ abstract bubbleToParent: boolean;
6
+ abstract trickleDownToChildren: boolean;
7
+ abstract publish<TMessage extends object>(message: TMessage): void;
8
+ abstract subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: MessageHandler<TMessage>): Subscription;
9
+ }
10
+ //# sourceMappingURL=IMessenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMessenger.d.ts","sourceRoot":"","sources":["../../../messaging/IMessenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAKpC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAKrD,8BAAsB,UAAU;IAM5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAMjC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAMxC,QAAQ,CAAC,OAAO,CAAC,QAAQ,SAAS,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAMlE,QAAQ,CAAC,SAAS,CAAC,QAAQ,SAAS,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,YAAY;CAC7H"}
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ class IMessenger {
4
+ }
5
+
6
+ exports.IMessenger = IMessenger;
7
+ //# sourceMappingURL=IMessenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMessenger.js","sources":["../../../messaging/IMessenger.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor } from '@cratis/fundamentals';\nimport { Subscription } from 'rxjs';\n\n/**\n * Represents a message handler.\n */\nexport type MessageHandler<T> = (message: T) => void;\n\n/**\n * Defines a system for publishing and subscribing to messages.\n */\nexport abstract class IMessenger {\n\n /**\n * Gets or sets whether published messages should bubble to the parent messenger.\n * Defaults to false.\n */\n abstract bubbleToParent: boolean;\n\n /**\n * Gets or sets whether messages should trickle down to child messengers.\n * Defaults to true.\n */\n abstract trickleDownToChildren: boolean;\n\n /**\n * Publish a message.\n * @param {*} message Message to publish.\n */\n abstract publish<TMessage extends object>(message: TMessage): void;\n\n /**\n * Subscribe to a specific message type.\n * @param {MessageHandler} callback Callback that gets called when message arrives.\n */\n abstract subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: MessageHandler<TMessage>): Subscription;\n}\n"],"names":[],"mappings":";;MAcsB,UAAU,CAAA;AAyB/B;;;;"}
@@ -0,0 +1,7 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ export declare class Message {
3
+ readonly type: Constructor;
4
+ readonly content: object;
5
+ constructor(type: Constructor, content: object);
6
+ }
7
+ //# sourceMappingURL=Message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../messaging/Message.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,qBAAa,OAAO;IAOJ,QAAQ,CAAC,IAAI,EAAE,WAAW;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAA3C,IAAI,EAAE,WAAW,EAAW,OAAO,EAAE,MAAM;CAEnE"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ class Message {
4
+ type;
5
+ content;
6
+ constructor(type, content) {
7
+ this.type = type;
8
+ this.content = content;
9
+ }
10
+ }
11
+
12
+ exports.Message = Message;
13
+ //# sourceMappingURL=Message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Message.js","sources":["../../../messaging/Message.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor } from '@cratis/fundamentals';\n\n/**\n * Represents a message published on the {@link Messenger}.\n */\nexport class Message {\n\n /**\n * Initializes a new instance of {@link Message}.\n * @param {Constructor} type Type of the content in the message.\n * @param {*} content The actual content.\n */\n constructor(readonly type: Constructor, readonly content: object) {\n }\n}\n"],"names":[],"mappings":";;MAQa,OAAO,CAAA;AAOK,IAAA,IAAA;AAA4B,IAAA,OAAA;IAAjD,WAAA,CAAqB,IAAiB,EAAW,OAAe,EAAA;QAA3C,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAwB,IAAA,CAAA,OAAO,GAAP,OAAO;IACxD;AACH;;;;"}
@@ -0,0 +1,20 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ import { Subscription } from 'rxjs';
3
+ import { IMessenger } from './IMessenger';
4
+ export declare class Messenger extends IMessenger {
5
+ private readonly _parent?;
6
+ bubbleToParent: boolean;
7
+ trickleDownToChildren: boolean;
8
+ private readonly _messages;
9
+ private readonly _children;
10
+ constructor(_parent?: Messenger | undefined);
11
+ dispose(): void;
12
+ publish<TMessage extends object>(message: TMessage): void;
13
+ subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: (message: TMessage) => void): Subscription;
14
+ private _publishFromSelf;
15
+ private _publishFromParent;
16
+ private _publishFromChild;
17
+ private _publishLocally;
18
+ private _publishToChildren;
19
+ }
20
+ //# sourceMappingURL=Messenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Messenger.d.ts","sourceRoot":"","sources":["../../../messaging/Messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAmB,YAAY,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,qBAAa,SAAU,SAAQ,UAAU;IAOzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IANrC,cAAc,UAAS;IACvB,qBAAqB,UAAQ;IAE7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAErB,OAAO,CAAC,EAAE,SAAS,YAAA;IAQhD,OAAO;IAKP,OAAO,CAAC,QAAQ,SAAS,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAKzD,SAAS,CAAC,QAAQ,SAAS,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,YAAY;IAMpH,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;CAQ7B"}
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ var rxjs = require('rxjs');
4
+ var IMessenger = require('./IMessenger.js');
5
+ var Message = require('./Message.js');
6
+
7
+ class Messenger extends IMessenger.IMessenger {
8
+ _parent;
9
+ bubbleToParent = false;
10
+ trickleDownToChildren = true;
11
+ _messages = new rxjs.Subject();
12
+ _children = new Set();
13
+ constructor(_parent) {
14
+ super();
15
+ this._parent = _parent;
16
+ this._parent?._children.add(this);
17
+ }
18
+ dispose() {
19
+ this._parent?._children.delete(this);
20
+ }
21
+ publish(message) {
22
+ this._publishFromSelf(message);
23
+ }
24
+ subscribe(type, callback) {
25
+ const observable = this._messages.pipe(rxjs.filter(m => m.type === type));
26
+ const subscription = observable.subscribe(m => callback(m.content));
27
+ return subscription;
28
+ }
29
+ _publishFromSelf(message) {
30
+ this._publishLocally(message);
31
+ if (this.bubbleToParent && this._parent) {
32
+ this._parent._publishFromChild(message, this);
33
+ }
34
+ if (this.trickleDownToChildren) {
35
+ this._publishToChildren(message);
36
+ }
37
+ }
38
+ _publishFromParent(message) {
39
+ this._publishLocally(message);
40
+ if (this.trickleDownToChildren) {
41
+ this._publishToChildren(message);
42
+ }
43
+ }
44
+ _publishFromChild(message, child) {
45
+ this._publishLocally(message);
46
+ if (this.bubbleToParent && this._parent) {
47
+ this._parent._publishFromChild(message, this);
48
+ }
49
+ if (this.trickleDownToChildren) {
50
+ this._publishToChildren(message, child);
51
+ }
52
+ }
53
+ _publishLocally(message) {
54
+ this._messages.next(new Message.Message(message.constructor, message));
55
+ }
56
+ _publishToChildren(message, excludedChild) {
57
+ this._children.forEach(child => {
58
+ if (child === excludedChild) {
59
+ return;
60
+ }
61
+ child._publishFromParent(message);
62
+ });
63
+ }
64
+ }
65
+
66
+ exports.Messenger = Messenger;
67
+ //# sourceMappingURL=Messenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Messenger.js","sources":["../../../messaging/Messenger.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor } from '@cratis/fundamentals';\nimport { filter, Subject, Subscription } from 'rxjs';\nimport { IMessenger } from './IMessenger';\nimport { Message } from './Message';\n\n/**\n * Represents an implementation of {@link IMessenger}.\n */\nexport class Messenger extends IMessenger {\n bubbleToParent = false;\n trickleDownToChildren = true;\n\n private readonly _messages = new Subject<Message>();\n private readonly _children = new Set<Messenger>();\n\n constructor(private readonly _parent?: Messenger) {\n super();\n this._parent?._children.add(this);\n }\n\n /**\n * Dispose this messenger and remove it from its parent.\n */\n dispose() {\n this._parent?._children.delete(this);\n }\n\n /** @inheritdoc */\n publish<TMessage extends object>(message: TMessage): void {\n this._publishFromSelf(message);\n }\n\n /** @inheritdoc */\n subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: (message: TMessage) => void): Subscription {\n const observable = this._messages.pipe(filter(m => m.type === type));\n const subscription = observable.subscribe(m => callback(m.content as TMessage));\n return subscription;\n }\n\n private _publishFromSelf<TMessage extends object>(message: TMessage) {\n this._publishLocally(message);\n\n if (this.bubbleToParent && this._parent) {\n this._parent._publishFromChild(message, this);\n }\n\n if (this.trickleDownToChildren) {\n this._publishToChildren(message);\n }\n }\n\n private _publishFromParent<TMessage extends object>(message: TMessage) {\n this._publishLocally(message);\n\n if (this.trickleDownToChildren) {\n this._publishToChildren(message);\n }\n }\n\n private _publishFromChild<TMessage extends object>(message: TMessage, child: Messenger) {\n this._publishLocally(message);\n\n if (this.bubbleToParent && this._parent) {\n this._parent._publishFromChild(message, this);\n }\n\n if (this.trickleDownToChildren) {\n this._publishToChildren(message, child);\n }\n }\n\n private _publishLocally<TMessage extends object>(message: TMessage) {\n this._messages.next(new Message(message.constructor as Constructor, message));\n }\n\n private _publishToChildren<TMessage extends object>(message: TMessage, excludedChild?: Messenger) {\n this._children.forEach(child => {\n if (child === excludedChild) {\n return;\n }\n child._publishFromParent(message);\n });\n }\n}\n"],"names":["IMessenger","Subject","filter","Message"],"mappings":";;;;;;AAWM,MAAO,SAAU,SAAQA,qBAAU,CAAA;AAOR,IAAA,OAAA;IAN7B,cAAc,GAAG,KAAK;IACtB,qBAAqB,GAAG,IAAI;AAEX,IAAA,SAAS,GAAG,IAAIC,YAAO,EAAW;AAClC,IAAA,SAAS,GAAG,IAAI,GAAG,EAAa;AAEjD,IAAA,WAAA,CAA6B,OAAmB,EAAA;AAC5C,QAAA,KAAK,EAAE;QADkB,IAAA,CAAA,OAAO,GAAP,OAAO;QAEhC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;IAKA,OAAO,GAAA;QACH,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC;AAGA,IAAA,OAAO,CAA0B,OAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAClC;IAGA,SAAS,CAA0B,IAA2B,EAAE,QAAqC,EAAA;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAACC,WAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpE,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAmB,CAAC,CAAC;AAC/E,QAAA,OAAO,YAAY;IACvB;AAEQ,IAAA,gBAAgB,CAA0B,OAAiB,EAAA;AAC/D,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAE7B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;QACjD;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACpC;IACJ;AAEQ,IAAA,kBAAkB,CAA0B,OAAiB,EAAA;AACjE,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACpC;IACJ;IAEQ,iBAAiB,CAA0B,OAAiB,EAAE,KAAgB,EAAA;AAClF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAE7B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;QACjD;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;QAC3C;IACJ;AAEQ,IAAA,eAAe,CAA0B,OAAiB,EAAA;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAIC,eAAO,CAAC,OAAO,CAAC,WAA0B,EAAE,OAAO,CAAC,CAAC;IACjF;IAEQ,kBAAkB,CAA0B,OAAiB,EAAE,aAAyB,EAAA;AAC5F,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAG;AAC3B,YAAA,IAAI,KAAK,KAAK,aAAa,EAAE;gBACzB;YACJ;AACA,YAAA,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACrC,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_scoping_messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_scoping_messages.d.ts","sourceRoot":"","sources":["../../../../messaging/for_Messenger/when_scoping_messages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './IMessenger';
2
+ export * from './Message';
3
+ export * from './Messenger';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../messaging/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var IMessenger = require('./IMessenger.js');
4
+ var Message = require('./Message.js');
5
+ var Messenger = require('./Messenger.js');
6
+
7
+
8
+
9
+ exports.IMessenger = IMessenger.IMessenger;
10
+ exports.Message = Message.Message;
11
+ exports.Messenger = Messenger.Messenger;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  import * as commands from './commands';
2
2
  import * as identity from './identity';
3
+ import * as messaging from './messaging';
3
4
  import * as queries from './queries';
4
5
  import * as validation from './validation';
5
6
  import * as reflection from './reflection';
@@ -8,5 +9,5 @@ export * from './deepEqual';
8
9
  export * from './Globals';
9
10
  export * from './ICanBeConfigured';
10
11
  export * from './GetHttpHeaders';
11
- export { commands, identity, queries, validation, reflection, };
12
+ export { commands, identity, messaging, queries, validation, reflection, };
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,GACb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,GACb,CAAC"}
package/dist/esm/index.js CHANGED
@@ -2,12 +2,14 @@ import * as index from './commands/index.js';
2
2
  export { index as commands };
3
3
  import * as index$1 from './identity/index.js';
4
4
  export { index$1 as identity };
5
- import * as index$2 from './queries/index.js';
6
- export { index$2 as queries };
7
- import * as index$4 from './validation/index.js';
8
- export { index$4 as validation };
9
- import * as index$3 from './reflection/index.js';
10
- export { index$3 as reflection };
5
+ import * as index$2 from './messaging/index.js';
6
+ export { index$2 as messaging };
7
+ import * as index$3 from './queries/index.js';
8
+ export { index$3 as queries };
9
+ import * as index$5 from './validation/index.js';
10
+ export { index$5 as validation };
11
+ import * as index$4 from './reflection/index.js';
12
+ export { index$4 as reflection };
11
13
  export { joinPaths } from './joinPaths.js';
12
14
  export { deepEqual } from './deepEqual.js';
13
15
  export { Globals, ObservableQueryTransferMode } from './Globals.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
@@ -0,0 +1,10 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ import { Subscription } from 'rxjs';
3
+ export type MessageHandler<T> = (message: T) => void;
4
+ export declare abstract class IMessenger {
5
+ abstract bubbleToParent: boolean;
6
+ abstract trickleDownToChildren: boolean;
7
+ abstract publish<TMessage extends object>(message: TMessage): void;
8
+ abstract subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: MessageHandler<TMessage>): Subscription;
9
+ }
10
+ //# sourceMappingURL=IMessenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMessenger.d.ts","sourceRoot":"","sources":["../../../messaging/IMessenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAKpC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAKrD,8BAAsB,UAAU;IAM5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAMjC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAMxC,QAAQ,CAAC,OAAO,CAAC,QAAQ,SAAS,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAMlE,QAAQ,CAAC,SAAS,CAAC,QAAQ,SAAS,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,YAAY;CAC7H"}
@@ -0,0 +1,5 @@
1
+ class IMessenger {
2
+ }
3
+
4
+ export { IMessenger };
5
+ //# sourceMappingURL=IMessenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMessenger.js","sources":["../../../messaging/IMessenger.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor } from '@cratis/fundamentals';\nimport { Subscription } from 'rxjs';\n\n/**\n * Represents a message handler.\n */\nexport type MessageHandler<T> = (message: T) => void;\n\n/**\n * Defines a system for publishing and subscribing to messages.\n */\nexport abstract class IMessenger {\n\n /**\n * Gets or sets whether published messages should bubble to the parent messenger.\n * Defaults to false.\n */\n abstract bubbleToParent: boolean;\n\n /**\n * Gets or sets whether messages should trickle down to child messengers.\n * Defaults to true.\n */\n abstract trickleDownToChildren: boolean;\n\n /**\n * Publish a message.\n * @param {*} message Message to publish.\n */\n abstract publish<TMessage extends object>(message: TMessage): void;\n\n /**\n * Subscribe to a specific message type.\n * @param {MessageHandler} callback Callback that gets called when message arrives.\n */\n abstract subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: MessageHandler<TMessage>): Subscription;\n}\n"],"names":[],"mappings":"MAcsB,UAAU,CAAA;AAyB/B;;;;"}
@@ -0,0 +1,7 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ export declare class Message {
3
+ readonly type: Constructor;
4
+ readonly content: object;
5
+ constructor(type: Constructor, content: object);
6
+ }
7
+ //# sourceMappingURL=Message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../messaging/Message.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,qBAAa,OAAO;IAOJ,QAAQ,CAAC,IAAI,EAAE,WAAW;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAA3C,IAAI,EAAE,WAAW,EAAW,OAAO,EAAE,MAAM;CAEnE"}
@@ -0,0 +1,11 @@
1
+ class Message {
2
+ type;
3
+ content;
4
+ constructor(type, content) {
5
+ this.type = type;
6
+ this.content = content;
7
+ }
8
+ }
9
+
10
+ export { Message };
11
+ //# sourceMappingURL=Message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Message.js","sources":["../../../messaging/Message.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor } from '@cratis/fundamentals';\n\n/**\n * Represents a message published on the {@link Messenger}.\n */\nexport class Message {\n\n /**\n * Initializes a new instance of {@link Message}.\n * @param {Constructor} type Type of the content in the message.\n * @param {*} content The actual content.\n */\n constructor(readonly type: Constructor, readonly content: object) {\n }\n}\n"],"names":[],"mappings":"MAQa,OAAO,CAAA;AAOK,IAAA,IAAA;AAA4B,IAAA,OAAA;IAAjD,WAAA,CAAqB,IAAiB,EAAW,OAAe,EAAA;QAA3C,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAwB,IAAA,CAAA,OAAO,GAAP,OAAO;IACxD;AACH;;;;"}
@@ -0,0 +1,20 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ import { Subscription } from 'rxjs';
3
+ import { IMessenger } from './IMessenger';
4
+ export declare class Messenger extends IMessenger {
5
+ private readonly _parent?;
6
+ bubbleToParent: boolean;
7
+ trickleDownToChildren: boolean;
8
+ private readonly _messages;
9
+ private readonly _children;
10
+ constructor(_parent?: Messenger | undefined);
11
+ dispose(): void;
12
+ publish<TMessage extends object>(message: TMessage): void;
13
+ subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: (message: TMessage) => void): Subscription;
14
+ private _publishFromSelf;
15
+ private _publishFromParent;
16
+ private _publishFromChild;
17
+ private _publishLocally;
18
+ private _publishToChildren;
19
+ }
20
+ //# sourceMappingURL=Messenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Messenger.d.ts","sourceRoot":"","sources":["../../../messaging/Messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAmB,YAAY,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,qBAAa,SAAU,SAAQ,UAAU;IAOzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IANrC,cAAc,UAAS;IACvB,qBAAqB,UAAQ;IAE7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAErB,OAAO,CAAC,EAAE,SAAS,YAAA;IAQhD,OAAO;IAKP,OAAO,CAAC,QAAQ,SAAS,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAKzD,SAAS,CAAC,QAAQ,SAAS,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,YAAY;IAMpH,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;CAQ7B"}
@@ -0,0 +1,65 @@
1
+ import { Subject, filter } from 'rxjs';
2
+ import { IMessenger } from './IMessenger.js';
3
+ import { Message } from './Message.js';
4
+
5
+ class Messenger extends IMessenger {
6
+ _parent;
7
+ bubbleToParent = false;
8
+ trickleDownToChildren = true;
9
+ _messages = new Subject();
10
+ _children = new Set();
11
+ constructor(_parent) {
12
+ super();
13
+ this._parent = _parent;
14
+ this._parent?._children.add(this);
15
+ }
16
+ dispose() {
17
+ this._parent?._children.delete(this);
18
+ }
19
+ publish(message) {
20
+ this._publishFromSelf(message);
21
+ }
22
+ subscribe(type, callback) {
23
+ const observable = this._messages.pipe(filter(m => m.type === type));
24
+ const subscription = observable.subscribe(m => callback(m.content));
25
+ return subscription;
26
+ }
27
+ _publishFromSelf(message) {
28
+ this._publishLocally(message);
29
+ if (this.bubbleToParent && this._parent) {
30
+ this._parent._publishFromChild(message, this);
31
+ }
32
+ if (this.trickleDownToChildren) {
33
+ this._publishToChildren(message);
34
+ }
35
+ }
36
+ _publishFromParent(message) {
37
+ this._publishLocally(message);
38
+ if (this.trickleDownToChildren) {
39
+ this._publishToChildren(message);
40
+ }
41
+ }
42
+ _publishFromChild(message, child) {
43
+ this._publishLocally(message);
44
+ if (this.bubbleToParent && this._parent) {
45
+ this._parent._publishFromChild(message, this);
46
+ }
47
+ if (this.trickleDownToChildren) {
48
+ this._publishToChildren(message, child);
49
+ }
50
+ }
51
+ _publishLocally(message) {
52
+ this._messages.next(new Message(message.constructor, message));
53
+ }
54
+ _publishToChildren(message, excludedChild) {
55
+ this._children.forEach(child => {
56
+ if (child === excludedChild) {
57
+ return;
58
+ }
59
+ child._publishFromParent(message);
60
+ });
61
+ }
62
+ }
63
+
64
+ export { Messenger };
65
+ //# sourceMappingURL=Messenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Messenger.js","sources":["../../../messaging/Messenger.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor } from '@cratis/fundamentals';\nimport { filter, Subject, Subscription } from 'rxjs';\nimport { IMessenger } from './IMessenger';\nimport { Message } from './Message';\n\n/**\n * Represents an implementation of {@link IMessenger}.\n */\nexport class Messenger extends IMessenger {\n bubbleToParent = false;\n trickleDownToChildren = true;\n\n private readonly _messages = new Subject<Message>();\n private readonly _children = new Set<Messenger>();\n\n constructor(private readonly _parent?: Messenger) {\n super();\n this._parent?._children.add(this);\n }\n\n /**\n * Dispose this messenger and remove it from its parent.\n */\n dispose() {\n this._parent?._children.delete(this);\n }\n\n /** @inheritdoc */\n publish<TMessage extends object>(message: TMessage): void {\n this._publishFromSelf(message);\n }\n\n /** @inheritdoc */\n subscribe<TMessage extends object>(type: Constructor<TMessage>, callback: (message: TMessage) => void): Subscription {\n const observable = this._messages.pipe(filter(m => m.type === type));\n const subscription = observable.subscribe(m => callback(m.content as TMessage));\n return subscription;\n }\n\n private _publishFromSelf<TMessage extends object>(message: TMessage) {\n this._publishLocally(message);\n\n if (this.bubbleToParent && this._parent) {\n this._parent._publishFromChild(message, this);\n }\n\n if (this.trickleDownToChildren) {\n this._publishToChildren(message);\n }\n }\n\n private _publishFromParent<TMessage extends object>(message: TMessage) {\n this._publishLocally(message);\n\n if (this.trickleDownToChildren) {\n this._publishToChildren(message);\n }\n }\n\n private _publishFromChild<TMessage extends object>(message: TMessage, child: Messenger) {\n this._publishLocally(message);\n\n if (this.bubbleToParent && this._parent) {\n this._parent._publishFromChild(message, this);\n }\n\n if (this.trickleDownToChildren) {\n this._publishToChildren(message, child);\n }\n }\n\n private _publishLocally<TMessage extends object>(message: TMessage) {\n this._messages.next(new Message(message.constructor as Constructor, message));\n }\n\n private _publishToChildren<TMessage extends object>(message: TMessage, excludedChild?: Messenger) {\n this._children.forEach(child => {\n if (child === excludedChild) {\n return;\n }\n child._publishFromParent(message);\n });\n }\n}\n"],"names":[],"mappings":";;;;AAWM,MAAO,SAAU,SAAQ,UAAU,CAAA;AAOR,IAAA,OAAA;IAN7B,cAAc,GAAG,KAAK;IACtB,qBAAqB,GAAG,IAAI;AAEX,IAAA,SAAS,GAAG,IAAI,OAAO,EAAW;AAClC,IAAA,SAAS,GAAG,IAAI,GAAG,EAAa;AAEjD,IAAA,WAAA,CAA6B,OAAmB,EAAA;AAC5C,QAAA,KAAK,EAAE;QADkB,IAAA,CAAA,OAAO,GAAP,OAAO;QAEhC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;IAKA,OAAO,GAAA;QACH,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC;AAGA,IAAA,OAAO,CAA0B,OAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAClC;IAGA,SAAS,CAA0B,IAA2B,EAAE,QAAqC,EAAA;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpE,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAmB,CAAC,CAAC;AAC/E,QAAA,OAAO,YAAY;IACvB;AAEQ,IAAA,gBAAgB,CAA0B,OAAiB,EAAA;AAC/D,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAE7B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;QACjD;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACpC;IACJ;AAEQ,IAAA,kBAAkB,CAA0B,OAAiB,EAAA;AACjE,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACpC;IACJ;IAEQ,iBAAiB,CAA0B,OAAiB,EAAE,KAAgB,EAAA;AAClF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAE7B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;QACjD;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;QAC3C;IACJ;AAEQ,IAAA,eAAe,CAA0B,OAAiB,EAAA;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,WAA0B,EAAE,OAAO,CAAC,CAAC;IACjF;IAEQ,kBAAkB,CAA0B,OAAiB,EAAE,aAAyB,EAAA;AAC5F,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAG;AAC3B,YAAA,IAAI,KAAK,KAAK,aAAa,EAAE;gBACzB;YACJ;AACA,YAAA,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACrC,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_scoping_messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_scoping_messages.d.ts","sourceRoot":"","sources":["../../../../messaging/for_Messenger/when_scoping_messages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ import { Messenger } from '../Messenger';
2
+ class MessageToSend {
3
+ something;
4
+ constructor(something) {
5
+ this.something = something;
6
+ }
7
+ }
8
+ describe('when scoping messages', () => {
9
+ let root;
10
+ let child;
11
+ let grandchild;
12
+ let rootMessages;
13
+ let childMessages;
14
+ let grandchildMessages;
15
+ beforeEach(() => {
16
+ root = new Messenger();
17
+ child = new Messenger(root);
18
+ grandchild = new Messenger(child);
19
+ rootMessages = [];
20
+ childMessages = [];
21
+ grandchildMessages = [];
22
+ root.subscribe(MessageToSend, message => rootMessages.push(message));
23
+ child.subscribe(MessageToSend, message => childMessages.push(message));
24
+ grandchild.subscribe(MessageToSend, message => grandchildMessages.push(message));
25
+ });
26
+ afterEach(() => {
27
+ grandchild.dispose();
28
+ child.dispose();
29
+ root.dispose();
30
+ });
31
+ describe('and publishing from child with default options', () => {
32
+ beforeEach(() => child.publish(new MessageToSend('forty two')));
33
+ it('should publish locally', () => childMessages.length.should.equal(1));
34
+ it('should not bubble to parent', () => rootMessages.length.should.equal(0));
35
+ it('should trickle to child messengers', () => grandchildMessages.length.should.equal(1));
36
+ });
37
+ describe('and publishing from parent with default options', () => {
38
+ beforeEach(() => root.publish(new MessageToSend('forty two')));
39
+ it('should trickle recursively to child messengers', () => {
40
+ childMessages.length.should.equal(1);
41
+ grandchildMessages.length.should.equal(1);
42
+ });
43
+ });
44
+ describe('and child enables bubbling to parent', () => {
45
+ beforeEach(() => {
46
+ child.bubbleToParent = true;
47
+ child.publish(new MessageToSend('forty two'));
48
+ });
49
+ it('should bubble to parent', () => rootMessages.length.should.equal(1));
50
+ });
51
+ describe('and parent disables trickling to children', () => {
52
+ beforeEach(() => {
53
+ root.trickleDownToChildren = false;
54
+ root.publish(new MessageToSend('forty two'));
55
+ });
56
+ it('should not forward to any child messengers', () => {
57
+ childMessages.length.should.equal(0);
58
+ grandchildMessages.length.should.equal(0);
59
+ });
60
+ });
61
+ });
62
+ //# sourceMappingURL=when_scoping_messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_scoping_messages.js","sourceRoot":"","sources":["../../../../messaging/for_Messenger/when_scoping_messages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,aAAa;IACM;IAArB,YAAqB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAI,CAAC;CAC9C;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,IAAI,IAAe,CAAC;IACpB,IAAI,KAAgB,CAAC;IACrB,IAAI,UAAqB,CAAC;IAC1B,IAAI,YAA6B,CAAC;IAClC,IAAI,aAA8B,CAAC;IACnC,IAAI,kBAAmC,CAAC;IAExC,UAAU,CAAC,GAAG,EAAE;QACZ,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QACvB,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,UAAU,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,YAAY,GAAG,EAAE,CAAC;QAClB,aAAa,GAAG,EAAE,CAAC;QACnB,kBAAkB,GAAG,EAAE,CAAC;QAExB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC5D,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAEhE,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC7D,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAE/D,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAClD,UAAU,CAAC,GAAG,EAAE;YACZ,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACvD,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YAClD,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './IMessenger';
2
+ export * from './Message';
3
+ export * from './Messenger';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../messaging/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { IMessenger } from './IMessenger.js';
2
+ export { Message } from './Message.js';
3
+ export { Messenger } from './Messenger.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}