@wix/services-manager 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/helpers.d.ts +1 -0
- package/build/helpers.js +6 -0
- package/build/remote-helpers.d.ts +2 -1
- package/build/remote-helpers.js +16 -7
- package/build/services-manager.d.ts +1 -1
- package/build/services-manager.js +10 -10
- package/cjs/build/helpers.d.ts +1 -0
- package/cjs/build/helpers.js +8 -1
- package/cjs/build/remote-helpers.d.ts +2 -1
- package/cjs/build/remote-helpers.js +16 -7
- package/cjs/build/services-manager.d.ts +1 -1
- package/cjs/build/services-manager.js +10 -10
- package/package.json +2 -2
package/build/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { GetService, ThreadMode } from '@wix/services-definitions';
|
|
2
2
|
export { defineService, implementService } from '@wix/services-definitions';
|
|
3
3
|
export declare const resolveServiceGetterFromContext: <M extends ThreadMode = ThreadMode.REMOTE>() => GetService<M>;
|
|
4
|
+
export declare const resolveSignalsReadyFromContext: () => Promise<void>;
|
package/build/helpers.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { wixContext } from '@wix/sdk-context';
|
|
2
2
|
export { defineService, implementService } from '@wix/services-definitions';
|
|
3
3
|
export const resolveServiceGetterFromContext = () => wixContext?.getService || globalThis?.__wix_context__?.getService;
|
|
4
|
+
export const resolveSignalsReadyFromContext = () => {
|
|
5
|
+
const awaitRemoteSignals = wixContext?.awaitRemoteSignals ||
|
|
6
|
+
globalThis?.__wix_context__?.awaitRemoteSignals ||
|
|
7
|
+
(() => Promise.resolve());
|
|
8
|
+
return awaitRemoteSignals();
|
|
9
|
+
};
|
|
@@ -12,9 +12,10 @@ export type RemoteServicesManager = ServicesManager<ThreadMode.REMOTE> & {
|
|
|
12
12
|
signals: any;
|
|
13
13
|
}[];
|
|
14
14
|
awaitConnectionFromMain: () => Promise<boolean>;
|
|
15
|
+
enableContext: (context: 'global' | 'module') => RemoteServicesManager;
|
|
15
16
|
};
|
|
16
17
|
export type ProxyServiceManager = Comlink.Remote<RemoteServicesManager>;
|
|
17
|
-
export declare function createServiceProxy<T extends ServiceDefinition<any, any>>(definition: T, remoteServiceManager: ProxyServiceManager
|
|
18
|
+
export declare function createServiceProxy<T extends ServiceDefinition<any, any>>(definition: T, remoteServiceManager: ProxyServiceManager | Promise<ProxyServiceManager>, localServicesManager: ServicesManager): PromisifiedServiceAPI<T>;
|
|
18
19
|
export declare enum SERVICE_MANAGER_MESSAGES {
|
|
19
20
|
INIT_PORT = "WIX_MESSAGE.SERVICE_MANAGER.INIT_PORT",
|
|
20
21
|
SIGNAL = "WIX_MESSAGE.SERVICE_MANAGER.SIGNAL",
|
package/build/remote-helpers.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { defineService, } from '@wix/services-definitions';
|
|
2
2
|
import * as Comlink from 'comlink';
|
|
3
3
|
import { initializeTransferHandlers } from './transfer-handlers/init-handlers.js';
|
|
4
|
-
export function createServiceProxy(definition, remoteServiceManager, localServicesManager
|
|
4
|
+
export function createServiceProxy(definition, remoteServiceManager, localServicesManager) {
|
|
5
5
|
return new Proxy({}, {
|
|
6
6
|
get(_, prop) {
|
|
7
7
|
if (prop === 'signals') {
|
|
8
8
|
return localServicesManager.getServiceSignals(definition);
|
|
9
9
|
}
|
|
10
10
|
return async (...args) => {
|
|
11
|
-
|
|
12
|
-
await
|
|
13
|
-
|
|
14
|
-
let service =
|
|
11
|
+
const remoteManager = remoteServiceManager instanceof Promise
|
|
12
|
+
? await remoteServiceManager
|
|
13
|
+
: remoteServiceManager;
|
|
14
|
+
let service = remoteManager.getServiceProxy(definition);
|
|
15
15
|
if (!service[prop]) {
|
|
16
16
|
service = await service;
|
|
17
17
|
}
|
|
@@ -114,6 +114,7 @@ retryOptions: { timeout = 10000, interval = 11000 } = {}, remoteServices = [], a
|
|
|
114
114
|
const remoteServicesManager = createRemoteServicesManager({
|
|
115
115
|
servicesManager: manager,
|
|
116
116
|
});
|
|
117
|
+
Comlink.expose(remoteServicesManager, localPort);
|
|
117
118
|
// sync from main to remote manager when set is from main
|
|
118
119
|
signalsRegistry.addReplicator((id, value, revision) => {
|
|
119
120
|
wrappedManager.syncSignal(id, value, revision);
|
|
@@ -124,7 +125,6 @@ retryOptions: { timeout = 10000, interval = 11000 } = {}, remoteServices = [], a
|
|
|
124
125
|
.forEach(({ serviceId, signals }) => {
|
|
125
126
|
signalsRegistry.setServiceSignals(serviceId, signals);
|
|
126
127
|
});
|
|
127
|
-
Comlink.expose(remoteServicesManager, localPort);
|
|
128
128
|
resolve(wrappedManager);
|
|
129
129
|
}
|
|
130
130
|
};
|
|
@@ -161,7 +161,12 @@ export function createRemoteServicesManager({ servicesManager, messageFrame, })
|
|
|
161
161
|
result = servicesManager.getService(definition, getService, signals || servicesManager.getServiceSignals(definition));
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
|
-
result = createServiceProxy(definition,
|
|
164
|
+
result = createServiceProxy(definition,
|
|
165
|
+
// remoteServiceManager!,
|
|
166
|
+
(async () => {
|
|
167
|
+
await connectedPromise;
|
|
168
|
+
return remoteServiceManager;
|
|
169
|
+
})(), servicesManager);
|
|
165
170
|
servicesManager.addService(definition, () => result);
|
|
166
171
|
}
|
|
167
172
|
if (result) {
|
|
@@ -206,6 +211,10 @@ export function createRemoteServicesManager({ servicesManager, messageFrame, })
|
|
|
206
211
|
signals: remoteManager.getService(definition).signals,
|
|
207
212
|
}));
|
|
208
213
|
},
|
|
214
|
+
enableContext(context) {
|
|
215
|
+
servicesManager.enableContext.bind(this)(context);
|
|
216
|
+
return this;
|
|
217
|
+
},
|
|
209
218
|
};
|
|
210
219
|
if (messageFrame) {
|
|
211
220
|
messageFrame.onmessage = (event) => {
|
|
@@ -7,6 +7,6 @@ export declare function createServicesManager<M extends ThreadMode = ThreadMode.
|
|
|
7
7
|
}): ServicesManager<M>;
|
|
8
8
|
export type ServicesRegistrar = {
|
|
9
9
|
registeredServices: ServiceBinding<any, any>[];
|
|
10
|
-
addService<T extends ServiceDefinition<any, any
|
|
10
|
+
addService<T extends ServiceDefinition<any, any> = any, Impl extends ServiceFactory<T, any, M> = any, M extends ThreadMode = any>(definition: T, impl: Impl, config?: ServiceFactoryConfig<Impl, M>): ServicesRegistrar;
|
|
11
11
|
};
|
|
12
12
|
export declare function createServicesMap(registeredServices?: ServiceBinding<any, any>[]): ServicesRegistrar;
|
|
@@ -53,19 +53,19 @@ signalsRegistry = createSignalsRegistry(), } = {}) {
|
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
enableContext(context) {
|
|
56
|
+
let resolvedContext = wixContext;
|
|
56
57
|
if (context === 'global') {
|
|
57
|
-
if (globalThis.__wix_context__) {
|
|
58
|
-
globalThis.__wix_context__
|
|
58
|
+
if (!globalThis.__wix_context__) {
|
|
59
|
+
globalThis.__wix_context__ = {};
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
-
globalThis.__wix_context__ = {
|
|
62
|
-
getService: manager.getService,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
wixContext.getService = manager.getService;
|
|
61
|
+
resolvedContext = globalThis.__wix_context__;
|
|
68
62
|
}
|
|
63
|
+
resolvedContext.getService = this.getService;
|
|
64
|
+
resolvedContext.awaitRemoteSignals = async () =>
|
|
65
|
+
// remote services manager
|
|
66
|
+
this.awaitConnectionFromMain
|
|
67
|
+
? this.awaitConnectionFromMain()
|
|
68
|
+
: true;
|
|
69
69
|
return this;
|
|
70
70
|
},
|
|
71
71
|
};
|
package/cjs/build/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { GetService, ThreadMode } from '@wix/services-definitions';
|
|
2
2
|
export { defineService, implementService } from '@wix/services-definitions';
|
|
3
3
|
export declare const resolveServiceGetterFromContext: <M extends ThreadMode = ThreadMode.REMOTE>() => GetService<M>;
|
|
4
|
+
export declare const resolveSignalsReadyFromContext: () => Promise<void>;
|
package/cjs/build/helpers.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveServiceGetterFromContext = exports.implementService = exports.defineService = void 0;
|
|
3
|
+
exports.resolveSignalsReadyFromContext = exports.resolveServiceGetterFromContext = exports.implementService = exports.defineService = void 0;
|
|
4
4
|
const sdk_context_1 = require("@wix/sdk-context");
|
|
5
5
|
var services_definitions_1 = require("@wix/services-definitions");
|
|
6
6
|
Object.defineProperty(exports, "defineService", { enumerable: true, get: function () { return services_definitions_1.defineService; } });
|
|
7
7
|
Object.defineProperty(exports, "implementService", { enumerable: true, get: function () { return services_definitions_1.implementService; } });
|
|
8
8
|
const resolveServiceGetterFromContext = () => sdk_context_1.wixContext?.getService || globalThis?.__wix_context__?.getService;
|
|
9
9
|
exports.resolveServiceGetterFromContext = resolveServiceGetterFromContext;
|
|
10
|
+
const resolveSignalsReadyFromContext = () => {
|
|
11
|
+
const awaitRemoteSignals = sdk_context_1.wixContext?.awaitRemoteSignals ||
|
|
12
|
+
globalThis?.__wix_context__?.awaitRemoteSignals ||
|
|
13
|
+
(() => Promise.resolve());
|
|
14
|
+
return awaitRemoteSignals();
|
|
15
|
+
};
|
|
16
|
+
exports.resolveSignalsReadyFromContext = resolveSignalsReadyFromContext;
|
|
@@ -12,9 +12,10 @@ export type RemoteServicesManager = ServicesManager<ThreadMode.REMOTE> & {
|
|
|
12
12
|
signals: any;
|
|
13
13
|
}[];
|
|
14
14
|
awaitConnectionFromMain: () => Promise<boolean>;
|
|
15
|
+
enableContext: (context: 'global' | 'module') => RemoteServicesManager;
|
|
15
16
|
};
|
|
16
17
|
export type ProxyServiceManager = Comlink.Remote<RemoteServicesManager>;
|
|
17
|
-
export declare function createServiceProxy<T extends ServiceDefinition<any, any>>(definition: T, remoteServiceManager: ProxyServiceManager
|
|
18
|
+
export declare function createServiceProxy<T extends ServiceDefinition<any, any>>(definition: T, remoteServiceManager: ProxyServiceManager | Promise<ProxyServiceManager>, localServicesManager: ServicesManager): PromisifiedServiceAPI<T>;
|
|
18
19
|
export declare enum SERVICE_MANAGER_MESSAGES {
|
|
19
20
|
INIT_PORT = "WIX_MESSAGE.SERVICE_MANAGER.INIT_PORT",
|
|
20
21
|
SIGNAL = "WIX_MESSAGE.SERVICE_MANAGER.SIGNAL",
|
|
@@ -41,17 +41,17 @@ exports.createRemoteServicesManager = createRemoteServicesManager;
|
|
|
41
41
|
const services_definitions_1 = require("@wix/services-definitions");
|
|
42
42
|
const Comlink = __importStar(require("comlink"));
|
|
43
43
|
const init_handlers_js_1 = require("./transfer-handlers/init-handlers.js");
|
|
44
|
-
function createServiceProxy(definition, remoteServiceManager, localServicesManager
|
|
44
|
+
function createServiceProxy(definition, remoteServiceManager, localServicesManager) {
|
|
45
45
|
return new Proxy({}, {
|
|
46
46
|
get(_, prop) {
|
|
47
47
|
if (prop === 'signals') {
|
|
48
48
|
return localServicesManager.getServiceSignals(definition);
|
|
49
49
|
}
|
|
50
50
|
return async (...args) => {
|
|
51
|
-
|
|
52
|
-
await
|
|
53
|
-
|
|
54
|
-
let service =
|
|
51
|
+
const remoteManager = remoteServiceManager instanceof Promise
|
|
52
|
+
? await remoteServiceManager
|
|
53
|
+
: remoteServiceManager;
|
|
54
|
+
let service = remoteManager.getServiceProxy(definition);
|
|
55
55
|
if (!service[prop]) {
|
|
56
56
|
service = await service;
|
|
57
57
|
}
|
|
@@ -154,6 +154,7 @@ retryOptions: { timeout = 10000, interval = 11000 } = {}, remoteServices = [], a
|
|
|
154
154
|
const remoteServicesManager = createRemoteServicesManager({
|
|
155
155
|
servicesManager: manager,
|
|
156
156
|
});
|
|
157
|
+
Comlink.expose(remoteServicesManager, localPort);
|
|
157
158
|
// sync from main to remote manager when set is from main
|
|
158
159
|
signalsRegistry.addReplicator((id, value, revision) => {
|
|
159
160
|
wrappedManager.syncSignal(id, value, revision);
|
|
@@ -164,7 +165,6 @@ retryOptions: { timeout = 10000, interval = 11000 } = {}, remoteServices = [], a
|
|
|
164
165
|
.forEach(({ serviceId, signals }) => {
|
|
165
166
|
signalsRegistry.setServiceSignals(serviceId, signals);
|
|
166
167
|
});
|
|
167
|
-
Comlink.expose(remoteServicesManager, localPort);
|
|
168
168
|
resolve(wrappedManager);
|
|
169
169
|
}
|
|
170
170
|
};
|
|
@@ -201,7 +201,12 @@ function createRemoteServicesManager({ servicesManager, messageFrame, }) {
|
|
|
201
201
|
result = servicesManager.getService(definition, getService, signals || servicesManager.getServiceSignals(definition));
|
|
202
202
|
}
|
|
203
203
|
else {
|
|
204
|
-
result = createServiceProxy(definition,
|
|
204
|
+
result = createServiceProxy(definition,
|
|
205
|
+
// remoteServiceManager!,
|
|
206
|
+
(async () => {
|
|
207
|
+
await connectedPromise;
|
|
208
|
+
return remoteServiceManager;
|
|
209
|
+
})(), servicesManager);
|
|
205
210
|
servicesManager.addService(definition, () => result);
|
|
206
211
|
}
|
|
207
212
|
if (result) {
|
|
@@ -246,6 +251,10 @@ function createRemoteServicesManager({ servicesManager, messageFrame, }) {
|
|
|
246
251
|
signals: remoteManager.getService(definition).signals,
|
|
247
252
|
}));
|
|
248
253
|
},
|
|
254
|
+
enableContext(context) {
|
|
255
|
+
servicesManager.enableContext.bind(this)(context);
|
|
256
|
+
return this;
|
|
257
|
+
},
|
|
249
258
|
};
|
|
250
259
|
if (messageFrame) {
|
|
251
260
|
messageFrame.onmessage = (event) => {
|
|
@@ -7,6 +7,6 @@ export declare function createServicesManager<M extends ThreadMode = ThreadMode.
|
|
|
7
7
|
}): ServicesManager<M>;
|
|
8
8
|
export type ServicesRegistrar = {
|
|
9
9
|
registeredServices: ServiceBinding<any, any>[];
|
|
10
|
-
addService<T extends ServiceDefinition<any, any
|
|
10
|
+
addService<T extends ServiceDefinition<any, any> = any, Impl extends ServiceFactory<T, any, M> = any, M extends ThreadMode = any>(definition: T, impl: Impl, config?: ServiceFactoryConfig<Impl, M>): ServicesRegistrar;
|
|
11
11
|
};
|
|
12
12
|
export declare function createServicesMap(registeredServices?: ServiceBinding<any, any>[]): ServicesRegistrar;
|
|
@@ -59,19 +59,19 @@ signalsRegistry = (0, registry_js_1.createSignalsRegistry)(), } = {}) {
|
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
enableContext(context) {
|
|
62
|
+
let resolvedContext = sdk_context_1.wixContext;
|
|
62
63
|
if (context === 'global') {
|
|
63
|
-
if (globalThis.__wix_context__) {
|
|
64
|
-
globalThis.__wix_context__
|
|
64
|
+
if (!globalThis.__wix_context__) {
|
|
65
|
+
globalThis.__wix_context__ = {};
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
-
globalThis.__wix_context__ = {
|
|
68
|
-
getService: manager.getService,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
sdk_context_1.wixContext.getService = manager.getService;
|
|
67
|
+
resolvedContext = globalThis.__wix_context__;
|
|
74
68
|
}
|
|
69
|
+
resolvedContext.getService = this.getService;
|
|
70
|
+
resolvedContext.awaitRemoteSignals = async () =>
|
|
71
|
+
// remote services manager
|
|
72
|
+
this.awaitConnectionFromMain
|
|
73
|
+
? this.awaitConnectionFromMain()
|
|
74
|
+
: true;
|
|
75
75
|
return this;
|
|
76
76
|
},
|
|
77
77
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/services-manager",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./cjs/build/services-manager.js",
|
|
6
6
|
"exports": {
|
|
@@ -90,5 +90,5 @@
|
|
|
90
90
|
]
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
|
-
"falconPackageHash": "
|
|
93
|
+
"falconPackageHash": "db3a2d98d49707022d917c5b3cf20b5969b0a32671ac878a22b5a096"
|
|
94
94
|
}
|