1 | import { __assign } from './_virtual/_tslib.js';
|
2 | import { symbolObservable, toInvokeSource, mapContext, isMachine } from './utils.js';
|
3 | import { provide } from './serviceScope.js';
|
4 |
|
5 | function createNullActor(id) {
|
6 | var _a;
|
7 |
|
8 | return _a = {
|
9 | id: id,
|
10 | send: function () {
|
11 | return void 0;
|
12 | },
|
13 | subscribe: function () {
|
14 | return {
|
15 | unsubscribe: function () {
|
16 | return void 0;
|
17 | }
|
18 | };
|
19 | },
|
20 | getSnapshot: function () {
|
21 | return undefined;
|
22 | },
|
23 | toJSON: function () {
|
24 | return {
|
25 | id: id
|
26 | };
|
27 | }
|
28 | }, _a[symbolObservable] = function () {
|
29 | return this;
|
30 | }, _a;
|
31 | }
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | function createInvocableActor(invokeDefinition, machine, context, _event) {
|
40 | var _a;
|
41 |
|
42 | var invokeSrc = toInvokeSource(invokeDefinition.src);
|
43 | var serviceCreator = (_a = machine === null || machine === void 0 ? void 0 : machine.options.services) === null || _a === void 0 ? void 0 : _a[invokeSrc.type];
|
44 | var resolvedData = invokeDefinition.data ? mapContext(invokeDefinition.data, context, _event) : undefined;
|
45 | var tempActor = serviceCreator ? createDeferredActor(serviceCreator, invokeDefinition.id, resolvedData) : createNullActor(invokeDefinition.id);
|
46 |
|
47 | tempActor.meta = invokeDefinition;
|
48 | return tempActor;
|
49 | }
|
50 | function createDeferredActor(entity, id, data) {
|
51 | var tempActor = createNullActor(id);
|
52 |
|
53 | tempActor.deferred = true;
|
54 |
|
55 | if (isMachine(entity)) {
|
56 |
|
57 | var initialState_1 = tempActor.state = provide(undefined, function () {
|
58 | return (data ? entity.withContext(data) : entity).initialState;
|
59 | });
|
60 |
|
61 | tempActor.getSnapshot = function () {
|
62 | return initialState_1;
|
63 | };
|
64 | }
|
65 |
|
66 | return tempActor;
|
67 | }
|
68 | function isActor(item) {
|
69 | try {
|
70 | return typeof item.send === 'function';
|
71 | } catch (e) {
|
72 | return false;
|
73 | }
|
74 | }
|
75 | function isSpawnedActor(item) {
|
76 | return isActor(item) && 'id' in item;
|
77 | }
|
78 |
|
79 | function toActorRef(actorRefLike) {
|
80 | var _a;
|
81 |
|
82 | return __assign((_a = {
|
83 | subscribe: function () {
|
84 | return {
|
85 | unsubscribe: function () {
|
86 | return void 0;
|
87 | }
|
88 | };
|
89 | },
|
90 | id: 'anonymous',
|
91 | getSnapshot: function () {
|
92 | return undefined;
|
93 | }
|
94 | }, _a[symbolObservable] = function () {
|
95 | return this;
|
96 | }, _a), actorRefLike);
|
97 | }
|
98 |
|
99 | export { createDeferredActor, createInvocableActor, createNullActor, isActor, isSpawnedActor, toActorRef };
|