@wix/services-manager 0.2.18 → 0.2.20
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/core-services/signals/definition.d.ts +1 -3
- package/build/core-services/signals/definition.js +1 -1
- package/build/core-services/signals/service.d.ts +7 -12
- package/build/core-services/signals/service.js +15 -6
- package/build/helpers.d.ts +0 -3
- package/build/helpers.js +0 -8
- package/build/services-manager.d.ts +2 -7
- package/build/services-manager.js +9 -37
- package/build/types.d.ts +6 -10
- package/cjs/build/core-services/signals/definition.d.ts +1 -3
- package/cjs/build/core-services/signals/service.d.ts +7 -12
- package/cjs/build/core-services/signals/service.js +14 -5
- package/cjs/build/helpers.d.ts +0 -3
- package/cjs/build/helpers.js +1 -11
- package/cjs/build/services-manager.d.ts +2 -7
- package/cjs/build/services-manager.js +9 -39
- package/cjs/build/types.d.ts +6 -10
- package/package.json +6 -16
- package/build/core-services/signals/registry.d.ts +0 -27
- package/build/core-services/signals/registry.js +0 -115
- package/build/core-services/signals/transfer-helpers.d.ts +0 -2
- package/build/core-services/signals/transfer-helpers.js +0 -64
- package/build/remote-helpers.d.ts +0 -54
- package/build/remote-helpers.js +0 -243
- package/build/transfer-handlers/init-handlers.d.ts +0 -2
- package/build/transfer-handlers/init-handlers.js +0 -79
- package/cjs/build/core-services/signals/registry.d.ts +0 -27
- package/cjs/build/core-services/signals/registry.js +0 -121
- package/cjs/build/core-services/signals/transfer-helpers.d.ts +0 -2
- package/cjs/build/core-services/signals/transfer-helpers.js +0 -101
- package/cjs/build/remote-helpers.d.ts +0 -54
- package/cjs/build/remote-helpers.js +0 -283
- package/cjs/build/transfer-handlers/init-handlers.d.ts +0 -2
- package/cjs/build/transfer-handlers/init-handlers.js +0 -115
- package/remote-helpers/package.json +0 -3
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { SignalsServiceDefinition } from '@wix/services-definitions/core-services/signals';
|
|
3
|
-
export type { ReadOnlySignal, Signal, SignalValue };
|
|
1
|
+
export { Signal, SignalsServiceDefinition, } from '@wix/services-definitions/core-services/signals';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SignalsServiceDefinition } from '@wix/services-definitions/core-services/signals';
|
|
1
|
+
export { SignalsServiceDefinition, } from '@wix/services-definitions/core-services/signals';
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import { ReadOnlySignal, Signal
|
|
2
|
-
import { SignalsRegistry } from './registry.js';
|
|
1
|
+
import { ReadOnlySignal, Signal } from '@wix/services-definitions/core-services/signals';
|
|
3
2
|
export declare const SignalsServiceFactory: import("@wix/services-definitions").ServiceFactory<string & {
|
|
4
3
|
__api: {
|
|
5
|
-
signal: <T
|
|
6
|
-
computed: <T
|
|
4
|
+
signal: <T>(initialValue: T) => Signal<T>;
|
|
5
|
+
computed: <T>(fn: () => T) => ReadOnlySignal<T>;
|
|
7
6
|
effect: (fn: () => void) => () => void;
|
|
8
7
|
};
|
|
9
|
-
__config: {
|
|
10
|
-
signalsRegistry: any;
|
|
11
|
-
};
|
|
8
|
+
__config: {};
|
|
12
9
|
isServiceDefinition?: boolean;
|
|
13
10
|
} & {
|
|
14
|
-
signal: <T
|
|
15
|
-
computed: <T
|
|
11
|
+
signal: <T>(initialValue: T) => Signal<T>;
|
|
12
|
+
computed: <T>(fn: () => T) => ReadOnlySignal<T>;
|
|
16
13
|
effect: (fn: () => void) => () => void;
|
|
17
|
-
},
|
|
18
|
-
signalsRegistry: SignalsRegistry;
|
|
19
|
-
}, import("@wix/services-definitions").ThreadMode.MAIN>;
|
|
14
|
+
}, unknown>;
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import { effect as peffect } from '@preact/signals-core';
|
|
2
|
-
import { implementService } from '
|
|
3
|
-
import { SignalsServiceDefinition, } from '
|
|
4
|
-
export const SignalsServiceFactory = implementService(SignalsServiceDefinition, (
|
|
1
|
+
import { computed as pcomputed, effect as peffect, signal as psignal, } from '@preact/signals-core';
|
|
2
|
+
import { implementService } from '@wix/services-definitions';
|
|
3
|
+
import { SignalsServiceDefinition, } from '@wix/services-definitions/core-services/signals';
|
|
4
|
+
export const SignalsServiceFactory = implementService(SignalsServiceDefinition, () => {
|
|
5
5
|
return {
|
|
6
6
|
signal: (initialValue) => {
|
|
7
|
-
|
|
7
|
+
const sig = psignal(initialValue);
|
|
8
|
+
const signal = {
|
|
9
|
+
get: () => sig.value,
|
|
10
|
+
set: (newValue) => (sig.value = newValue),
|
|
11
|
+
};
|
|
12
|
+
return signal;
|
|
8
13
|
},
|
|
9
14
|
computed: (fn) => {
|
|
10
|
-
|
|
15
|
+
const sig = pcomputed(fn);
|
|
16
|
+
const signal = {
|
|
17
|
+
get: () => sig.value,
|
|
18
|
+
};
|
|
19
|
+
return signal;
|
|
11
20
|
},
|
|
12
21
|
effect: peffect,
|
|
13
22
|
};
|
package/build/helpers.d.ts
CHANGED
|
@@ -1,4 +1 @@
|
|
|
1
|
-
import { GetService, ThreadMode } from '@wix/services-definitions';
|
|
2
1
|
export { defineService, implementService } from '@wix/services-definitions';
|
|
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,9 +1 @@
|
|
|
1
|
-
import { wixContext } from '@wix/sdk-context';
|
|
2
1
|
export { defineService, implementService } from '@wix/services-definitions';
|
|
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
|
-
};
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import { ServiceBinding, ServicesManager,
|
|
2
|
-
|
|
3
|
-
export { createSignalsRegistry, SignalsRegistry };
|
|
4
|
-
export declare function createServicesManager<M extends ThreadMode = ThreadMode.MAIN>(servicesBindings?: ServicesRegistrar, { signalsRegistry, }?: {
|
|
5
|
-
signalsRegistry?: SignalsRegistry;
|
|
6
|
-
auth?: any;
|
|
7
|
-
}): ServicesManager<M>;
|
|
1
|
+
import { ServiceBinding, ServicesManager, ServicesRegistrar } from './types.js';
|
|
2
|
+
export declare function createServicesManager(servicesBindings?: ServicesRegistrar, parentServicesManager?: ServicesManager): ServicesManager;
|
|
8
3
|
export declare function createServicesMap(registeredServices?: ServiceBinding<any, any>[]): ServicesRegistrar;
|
|
@@ -1,37 +1,25 @@
|
|
|
1
|
-
import { SignalsServiceDefinition } from '
|
|
1
|
+
import { SignalsServiceDefinition } from '@wix/services-definitions/core-services/signals';
|
|
2
2
|
import { SignalsServiceFactory } from './core-services/signals/service.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export { createSignalsRegistry, SignalsRegistry };
|
|
6
|
-
export function createServicesManager(servicesBindings, {
|
|
7
|
-
// in case we decide to keep multiple services manager in the same thread, we can use one signals registry for all of them
|
|
8
|
-
signalsRegistry = createSignalsRegistry(), } = {}) {
|
|
9
|
-
const coreRegisteredServices = createServicesMap().addService(SignalsServiceDefinition, SignalsServiceFactory, { signalsRegistry });
|
|
3
|
+
export function createServicesManager(servicesBindings, parentServicesManager) {
|
|
4
|
+
const coreRegisteredServices = createServicesMap().addService(SignalsServiceDefinition, SignalsServiceFactory);
|
|
10
5
|
const bindingsByDefinition = new Map([
|
|
11
6
|
...(servicesBindings ? servicesBindings.registeredServices : []),
|
|
12
7
|
...coreRegisteredServices.registeredServices,
|
|
13
8
|
].map((service) => [service.definition.toString(), service]));
|
|
14
9
|
const initializedServices = new Map();
|
|
15
10
|
const manager = {
|
|
16
|
-
|
|
17
|
-
return signalsRegistry;
|
|
18
|
-
},
|
|
19
|
-
getServiceSignals(definition) {
|
|
20
|
-
if (!manager.hasService(definition)) {
|
|
21
|
-
throw new Error(`Service ${definition.toString()} is defined in services manager`);
|
|
22
|
-
}
|
|
23
|
-
return signalsRegistry.getServiceSignals(definition.toString());
|
|
24
|
-
},
|
|
25
|
-
getService(definition, getService = manager.getService, signals = {}) {
|
|
11
|
+
getService(definition) {
|
|
26
12
|
if (!initializedServices.has(definition.toString())) {
|
|
27
13
|
const service = bindingsByDefinition.get(definition.toString());
|
|
28
14
|
if (!service) {
|
|
29
|
-
|
|
15
|
+
if (parentServicesManager) {
|
|
16
|
+
return parentServicesManager.getService(definition);
|
|
17
|
+
}
|
|
30
18
|
throw new Error(`Service ${definition} is not provided`);
|
|
31
19
|
}
|
|
32
20
|
initializedServices.set(definition.toString(), service.impl({
|
|
33
|
-
config:
|
|
34
|
-
getService,
|
|
21
|
+
config: service.config,
|
|
22
|
+
getService: manager.getService,
|
|
35
23
|
}));
|
|
36
24
|
}
|
|
37
25
|
return initializedServices.get(definition.toString());
|
|
@@ -84,22 +72,6 @@ signalsRegistry = createSignalsRegistry(), } = {}) {
|
|
|
84
72
|
}
|
|
85
73
|
});
|
|
86
74
|
},
|
|
87
|
-
enableContext(context) {
|
|
88
|
-
let resolvedContext = wixContext;
|
|
89
|
-
if (context === 'global') {
|
|
90
|
-
if (!globalThis.__wix_context__) {
|
|
91
|
-
globalThis.__wix_context__ = {};
|
|
92
|
-
}
|
|
93
|
-
resolvedContext = globalThis.__wix_context__;
|
|
94
|
-
}
|
|
95
|
-
resolvedContext.getService = this.getService;
|
|
96
|
-
resolvedContext.awaitRemoteSignals = async () =>
|
|
97
|
-
// remote services manager
|
|
98
|
-
this.awaitConnectionFromMain
|
|
99
|
-
? this.awaitConnectionFromMain()
|
|
100
|
-
: true;
|
|
101
|
-
return this;
|
|
102
|
-
},
|
|
103
75
|
};
|
|
104
76
|
// Then initialize all, but only if not already initialized
|
|
105
77
|
bindingsByDefinition.forEach(({ definition, impl, config }) => {
|
package/build/types.d.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetService, ServiceBinding, ServiceDefinition, ServiceFactory, ServiceFactoryConfig } from '@wix/services-definitions';
|
|
2
2
|
export type * from '@wix/services-definitions';
|
|
3
|
-
import { GetService, ServiceFactory, ServiceFactoryConfig, ThreadMode, ServiceDefinition, NamedSignals, ServiceBinding } from '@wix/services-definitions';
|
|
4
3
|
export type ServicesRegistrar = {
|
|
5
4
|
registeredServices: ServiceBinding<any, any>[];
|
|
6
|
-
addService<T extends ServiceDefinition<any, any> = any, Impl extends ServiceFactory<T, any
|
|
5
|
+
addService<T extends ServiceDefinition<any, any> = any, Impl extends ServiceFactory<T, any> = any>(definition: T, impl: Impl, config?: ServiceFactoryConfig<Impl>): ServicesRegistrar;
|
|
7
6
|
};
|
|
8
|
-
export type ServicesManager
|
|
9
|
-
getService: GetService
|
|
10
|
-
getServiceSignals<T extends ServiceDefinition<any, any>>(definition: T): NamedSignals;
|
|
7
|
+
export type ServicesManager = {
|
|
8
|
+
getService: GetService;
|
|
11
9
|
hasService<T extends ServiceDefinition<any, any>>(definition: T): boolean;
|
|
12
|
-
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any
|
|
13
|
-
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any
|
|
10
|
+
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any>>(definition: T, impl: Impl, config: ServiceFactoryConfig<Impl>): void;
|
|
11
|
+
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any>>(definition: T, impl: Impl): void;
|
|
14
12
|
addServices(servicesBindings: ServicesRegistrar): void;
|
|
15
|
-
getSignalsRegistry(): SignalsRegistry;
|
|
16
|
-
enableContext(context: 'global' | 'module'): ServicesManager<M>;
|
|
17
13
|
};
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { SignalsServiceDefinition } from '@wix/services-definitions/core-services/signals';
|
|
3
|
-
export type { ReadOnlySignal, Signal, SignalValue };
|
|
1
|
+
export { Signal, SignalsServiceDefinition, } from '@wix/services-definitions/core-services/signals';
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import { ReadOnlySignal, Signal
|
|
2
|
-
import { SignalsRegistry } from './registry.js';
|
|
1
|
+
import { ReadOnlySignal, Signal } from '@wix/services-definitions/core-services/signals';
|
|
3
2
|
export declare const SignalsServiceFactory: import("@wix/services-definitions").ServiceFactory<string & {
|
|
4
3
|
__api: {
|
|
5
|
-
signal: <T
|
|
6
|
-
computed: <T
|
|
4
|
+
signal: <T>(initialValue: T) => Signal<T>;
|
|
5
|
+
computed: <T>(fn: () => T) => ReadOnlySignal<T>;
|
|
7
6
|
effect: (fn: () => void) => () => void;
|
|
8
7
|
};
|
|
9
|
-
__config: {
|
|
10
|
-
signalsRegistry: any;
|
|
11
|
-
};
|
|
8
|
+
__config: {};
|
|
12
9
|
isServiceDefinition?: boolean;
|
|
13
10
|
} & {
|
|
14
|
-
signal: <T
|
|
15
|
-
computed: <T
|
|
11
|
+
signal: <T>(initialValue: T) => Signal<T>;
|
|
12
|
+
computed: <T>(fn: () => T) => ReadOnlySignal<T>;
|
|
16
13
|
effect: (fn: () => void) => () => void;
|
|
17
|
-
},
|
|
18
|
-
signalsRegistry: SignalsRegistry;
|
|
19
|
-
}, import("@wix/services-definitions").ThreadMode.MAIN>;
|
|
14
|
+
}, unknown>;
|
|
@@ -2,15 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SignalsServiceFactory = void 0;
|
|
4
4
|
const signals_core_1 = require("@preact/signals-core");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
exports.SignalsServiceFactory = (0,
|
|
5
|
+
const services_definitions_1 = require("@wix/services-definitions");
|
|
6
|
+
const signals_1 = require("@wix/services-definitions/core-services/signals");
|
|
7
|
+
exports.SignalsServiceFactory = (0, services_definitions_1.implementService)(signals_1.SignalsServiceDefinition, () => {
|
|
8
8
|
return {
|
|
9
9
|
signal: (initialValue) => {
|
|
10
|
-
|
|
10
|
+
const sig = (0, signals_core_1.signal)(initialValue);
|
|
11
|
+
const signal = {
|
|
12
|
+
get: () => sig.value,
|
|
13
|
+
set: (newValue) => (sig.value = newValue),
|
|
14
|
+
};
|
|
15
|
+
return signal;
|
|
11
16
|
},
|
|
12
17
|
computed: (fn) => {
|
|
13
|
-
|
|
18
|
+
const sig = (0, signals_core_1.computed)(fn);
|
|
19
|
+
const signal = {
|
|
20
|
+
get: () => sig.value,
|
|
21
|
+
};
|
|
22
|
+
return signal;
|
|
14
23
|
},
|
|
15
24
|
effect: signals_core_1.effect,
|
|
16
25
|
};
|
package/cjs/build/helpers.d.ts
CHANGED
|
@@ -1,4 +1 @@
|
|
|
1
|
-
import { GetService, ThreadMode } from '@wix/services-definitions';
|
|
2
1
|
export { defineService, implementService } from '@wix/services-definitions';
|
|
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,16 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const sdk_context_1 = require("@wix/sdk-context");
|
|
3
|
+
exports.implementService = exports.defineService = void 0;
|
|
5
4
|
var services_definitions_1 = require("@wix/services-definitions");
|
|
6
5
|
Object.defineProperty(exports, "defineService", { enumerable: true, get: function () { return services_definitions_1.defineService; } });
|
|
7
6
|
Object.defineProperty(exports, "implementService", { enumerable: true, get: function () { return services_definitions_1.implementService; } });
|
|
8
|
-
const resolveServiceGetterFromContext = () => sdk_context_1.wixContext?.getService || globalThis?.__wix_context__?.getService;
|
|
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;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import { ServiceBinding, ServicesManager,
|
|
2
|
-
|
|
3
|
-
export { createSignalsRegistry, SignalsRegistry };
|
|
4
|
-
export declare function createServicesManager<M extends ThreadMode = ThreadMode.MAIN>(servicesBindings?: ServicesRegistrar, { signalsRegistry, }?: {
|
|
5
|
-
signalsRegistry?: SignalsRegistry;
|
|
6
|
-
auth?: any;
|
|
7
|
-
}): ServicesManager<M>;
|
|
1
|
+
import { ServiceBinding, ServicesManager, ServicesRegistrar } from './types.js';
|
|
2
|
+
export declare function createServicesManager(servicesBindings?: ServicesRegistrar, parentServicesManager?: ServicesManager): ServicesManager;
|
|
8
3
|
export declare function createServicesMap(registeredServices?: ServiceBinding<any, any>[]): ServicesRegistrar;
|
|
@@ -1,43 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignalsRegistry = exports.createSignalsRegistry = void 0;
|
|
4
3
|
exports.createServicesManager = createServicesManager;
|
|
5
4
|
exports.createServicesMap = createServicesMap;
|
|
6
|
-
const
|
|
5
|
+
const signals_1 = require("@wix/services-definitions/core-services/signals");
|
|
7
6
|
const service_js_1 = require("./core-services/signals/service.js");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Object.defineProperty(exports, "SignalsRegistry", { enumerable: true, get: function () { return registry_js_1.SignalsRegistry; } });
|
|
11
|
-
const sdk_context_1 = require("@wix/sdk-context");
|
|
12
|
-
function createServicesManager(servicesBindings, {
|
|
13
|
-
// in case we decide to keep multiple services manager in the same thread, we can use one signals registry for all of them
|
|
14
|
-
signalsRegistry = (0, registry_js_1.createSignalsRegistry)(), } = {}) {
|
|
15
|
-
const coreRegisteredServices = createServicesMap().addService(definition_js_1.SignalsServiceDefinition, service_js_1.SignalsServiceFactory, { signalsRegistry });
|
|
7
|
+
function createServicesManager(servicesBindings, parentServicesManager) {
|
|
8
|
+
const coreRegisteredServices = createServicesMap().addService(signals_1.SignalsServiceDefinition, service_js_1.SignalsServiceFactory);
|
|
16
9
|
const bindingsByDefinition = new Map([
|
|
17
10
|
...(servicesBindings ? servicesBindings.registeredServices : []),
|
|
18
11
|
...coreRegisteredServices.registeredServices,
|
|
19
12
|
].map((service) => [service.definition.toString(), service]));
|
|
20
13
|
const initializedServices = new Map();
|
|
21
14
|
const manager = {
|
|
22
|
-
|
|
23
|
-
return signalsRegistry;
|
|
24
|
-
},
|
|
25
|
-
getServiceSignals(definition) {
|
|
26
|
-
if (!manager.hasService(definition)) {
|
|
27
|
-
throw new Error(`Service ${definition.toString()} is defined in services manager`);
|
|
28
|
-
}
|
|
29
|
-
return signalsRegistry.getServiceSignals(definition.toString());
|
|
30
|
-
},
|
|
31
|
-
getService(definition, getService = manager.getService, signals = {}) {
|
|
15
|
+
getService(definition) {
|
|
32
16
|
if (!initializedServices.has(definition.toString())) {
|
|
33
17
|
const service = bindingsByDefinition.get(definition.toString());
|
|
34
18
|
if (!service) {
|
|
35
|
-
|
|
19
|
+
if (parentServicesManager) {
|
|
20
|
+
return parentServicesManager.getService(definition);
|
|
21
|
+
}
|
|
36
22
|
throw new Error(`Service ${definition} is not provided`);
|
|
37
23
|
}
|
|
38
24
|
initializedServices.set(definition.toString(), service.impl({
|
|
39
|
-
config:
|
|
40
|
-
getService,
|
|
25
|
+
config: service.config,
|
|
26
|
+
getService: manager.getService,
|
|
41
27
|
}));
|
|
42
28
|
}
|
|
43
29
|
return initializedServices.get(definition.toString());
|
|
@@ -90,22 +76,6 @@ signalsRegistry = (0, registry_js_1.createSignalsRegistry)(), } = {}) {
|
|
|
90
76
|
}
|
|
91
77
|
});
|
|
92
78
|
},
|
|
93
|
-
enableContext(context) {
|
|
94
|
-
let resolvedContext = sdk_context_1.wixContext;
|
|
95
|
-
if (context === 'global') {
|
|
96
|
-
if (!globalThis.__wix_context__) {
|
|
97
|
-
globalThis.__wix_context__ = {};
|
|
98
|
-
}
|
|
99
|
-
resolvedContext = globalThis.__wix_context__;
|
|
100
|
-
}
|
|
101
|
-
resolvedContext.getService = this.getService;
|
|
102
|
-
resolvedContext.awaitRemoteSignals = async () =>
|
|
103
|
-
// remote services manager
|
|
104
|
-
this.awaitConnectionFromMain
|
|
105
|
-
? this.awaitConnectionFromMain()
|
|
106
|
-
: true;
|
|
107
|
-
return this;
|
|
108
|
-
},
|
|
109
79
|
};
|
|
110
80
|
// Then initialize all, but only if not already initialized
|
|
111
81
|
bindingsByDefinition.forEach(({ definition, impl, config }) => {
|
package/cjs/build/types.d.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetService, ServiceBinding, ServiceDefinition, ServiceFactory, ServiceFactoryConfig } from '@wix/services-definitions';
|
|
2
2
|
export type * from '@wix/services-definitions';
|
|
3
|
-
import { GetService, ServiceFactory, ServiceFactoryConfig, ThreadMode, ServiceDefinition, NamedSignals, ServiceBinding } from '@wix/services-definitions';
|
|
4
3
|
export type ServicesRegistrar = {
|
|
5
4
|
registeredServices: ServiceBinding<any, any>[];
|
|
6
|
-
addService<T extends ServiceDefinition<any, any> = any, Impl extends ServiceFactory<T, any
|
|
5
|
+
addService<T extends ServiceDefinition<any, any> = any, Impl extends ServiceFactory<T, any> = any>(definition: T, impl: Impl, config?: ServiceFactoryConfig<Impl>): ServicesRegistrar;
|
|
7
6
|
};
|
|
8
|
-
export type ServicesManager
|
|
9
|
-
getService: GetService
|
|
10
|
-
getServiceSignals<T extends ServiceDefinition<any, any>>(definition: T): NamedSignals;
|
|
7
|
+
export type ServicesManager = {
|
|
8
|
+
getService: GetService;
|
|
11
9
|
hasService<T extends ServiceDefinition<any, any>>(definition: T): boolean;
|
|
12
|
-
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any
|
|
13
|
-
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any
|
|
10
|
+
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any>>(definition: T, impl: Impl, config: ServiceFactoryConfig<Impl>): void;
|
|
11
|
+
addService<T extends ServiceDefinition<any, any>, Impl extends ServiceFactory<T, any>>(definition: T, impl: Impl): void;
|
|
14
12
|
addServices(servicesBindings: ServicesRegistrar): void;
|
|
15
|
-
getSignalsRegistry(): SignalsRegistry;
|
|
16
|
-
enableContext(context: 'global' | 'module'): ServicesManager<M>;
|
|
17
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/services-manager",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.20",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./cjs/build/services-manager.js",
|
|
6
6
|
"exports": {
|
|
@@ -16,10 +16,6 @@
|
|
|
16
16
|
"import": "./build/helpers.js",
|
|
17
17
|
"require": "./cjs/build/helpers.js"
|
|
18
18
|
},
|
|
19
|
-
"./remote-helpers": {
|
|
20
|
-
"import": "./build/remote-helpers.js",
|
|
21
|
-
"require": "./cjs/build/remote-helpers.js"
|
|
22
|
-
},
|
|
23
19
|
"./package.json": "./package.json",
|
|
24
20
|
"./core-services/signals": {
|
|
25
21
|
"import": "./build/core-services/signals/definition.js",
|
|
@@ -32,7 +28,6 @@
|
|
|
32
28
|
"cjs",
|
|
33
29
|
"core-services",
|
|
34
30
|
"helpers",
|
|
35
|
-
"remote-helpers",
|
|
36
31
|
"types"
|
|
37
32
|
],
|
|
38
33
|
"publishConfig": {
|
|
@@ -42,9 +37,7 @@
|
|
|
42
37
|
"scripts": {
|
|
43
38
|
"dev": "npx vite dev ./src/__tests__/test-data",
|
|
44
39
|
"build": "tsc && tsc --project tsconfig.cjs.json",
|
|
45
|
-
"test": "
|
|
46
|
-
"test:unit": "vitest --run",
|
|
47
|
-
"test:e2e": "node ./run-e2e-tests.js",
|
|
40
|
+
"test": "vitest",
|
|
48
41
|
"lint": "eslint --max-warnings=0 .",
|
|
49
42
|
"lint:fix": "eslint --max-warnings=0 . --fix",
|
|
50
43
|
"typecheck": "tsc --noEmit"
|
|
@@ -55,20 +48,17 @@
|
|
|
55
48
|
"dependencies": {
|
|
56
49
|
"@preact/signals-core": "^1.11.0",
|
|
57
50
|
"@wix/sdk-context": "0.0.1",
|
|
58
|
-
"@wix/services-definitions": "^0.1.
|
|
59
|
-
"comlink": "^4.4.2"
|
|
51
|
+
"@wix/services-definitions": "^0.1.4"
|
|
60
52
|
},
|
|
61
53
|
"devDependencies": {
|
|
62
|
-
"@playwright/test": "^1.53.2",
|
|
63
54
|
"@types/is-ci": "^3.0.4",
|
|
64
|
-
"@types/node": "^20.19.
|
|
55
|
+
"@types/node": "^20.19.7",
|
|
65
56
|
"@vitest/ui": "^1.6.1",
|
|
66
|
-
"@vitest/web-worker": "^2.1.9",
|
|
67
57
|
"eslint": "^8.57.1",
|
|
68
58
|
"eslint-config-sdk": "0.0.0",
|
|
69
59
|
"is-ci": "^3.0.1",
|
|
70
60
|
"jsdom": "^22.1.0",
|
|
71
|
-
"msw": "^2.10.
|
|
61
|
+
"msw": "^2.10.4",
|
|
72
62
|
"typescript": "^5.8.3",
|
|
73
63
|
"vitest": "^1.6.1",
|
|
74
64
|
"vitest-teamcity-reporter": "^0.3.1"
|
|
@@ -90,5 +80,5 @@
|
|
|
90
80
|
]
|
|
91
81
|
}
|
|
92
82
|
},
|
|
93
|
-
"falconPackageHash": "
|
|
83
|
+
"falconPackageHash": "afc8c1eaa4cfb386ed9cb5c33d8f1517c27653c630ba9962d3f6fa89"
|
|
94
84
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { ReadOnlySignal, Signal } from './definition.js';
|
|
2
|
-
import { Jsonifiable } from 'type-fest';
|
|
3
|
-
import { SignalsWrapper, SignalValue } from '@wix/services-definitions';
|
|
4
|
-
export declare function generateSignalId(): string;
|
|
5
|
-
export type SignalReplicator = (id: string, value: any, revision: string) => void;
|
|
6
|
-
export type InnerSignal<T extends SignalValue> = Signal<T> & {
|
|
7
|
-
syncSignal: (value: T, revision: string) => void;
|
|
8
|
-
getRevision(): string;
|
|
9
|
-
readonly: boolean;
|
|
10
|
-
};
|
|
11
|
-
export declare class SignalsRegistry {
|
|
12
|
-
private signalsStore;
|
|
13
|
-
private serviceSignalsRegistry;
|
|
14
|
-
private replicators;
|
|
15
|
-
private createInnerSignal;
|
|
16
|
-
getSignals(): ReadOnlySignal<any>[];
|
|
17
|
-
clearSignalsRegistry(): void;
|
|
18
|
-
private _createSignal;
|
|
19
|
-
setOrCreateSignal<T extends Jsonifiable>(id: string, initialValue: T, readonly?: boolean): ReadOnlySignal<T>;
|
|
20
|
-
createSignal<T extends Jsonifiable>(initialValue: T, id?: string): Signal<T>;
|
|
21
|
-
createComputedSignal<T extends Jsonifiable>(fn: () => T, id?: string): ReadOnlySignal<T>;
|
|
22
|
-
getSignalById(id: string): InnerSignal<any> | undefined;
|
|
23
|
-
addReplicator(replicator: SignalReplicator): void;
|
|
24
|
-
getServiceSignals(serviceId: string): SignalsWrapper | undefined;
|
|
25
|
-
setServiceSignals(serviceId: string, signals: SignalsWrapper): void;
|
|
26
|
-
}
|
|
27
|
-
export declare const createSignalsRegistry: () => SignalsRegistry;
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { computed as pcomputed, signal as psignal } from '@preact/signals-core';
|
|
2
|
-
export function generateSignalId() {
|
|
3
|
-
return 'signal:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
4
|
-
const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
5
|
-
return v.toString(16);
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
function generateRevisionId() {
|
|
9
|
-
return Math.random().toString(36).slice(2);
|
|
10
|
-
}
|
|
11
|
-
function toPublicSignal(signal) {
|
|
12
|
-
return {
|
|
13
|
-
...(signal.readonly ? {} : { set: signal.set }),
|
|
14
|
-
get: signal.get,
|
|
15
|
-
peek: signal.peek,
|
|
16
|
-
subscribe: signal.subscribe,
|
|
17
|
-
id: signal.id,
|
|
18
|
-
isSignal: true,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export class SignalsRegistry {
|
|
22
|
-
signalsStore = new Map();
|
|
23
|
-
serviceSignalsRegistry = new Map();
|
|
24
|
-
replicators = [];
|
|
25
|
-
createInnerSignal(value, id, readonly = false) {
|
|
26
|
-
let revisionId = generateRevisionId();
|
|
27
|
-
const sig = psignal(value);
|
|
28
|
-
const signal = {
|
|
29
|
-
get: () => sig.value,
|
|
30
|
-
peek: () => sig.peek(),
|
|
31
|
-
syncSignal: (newValue, revision) => {
|
|
32
|
-
if (sig.peek() !== newValue && revision !== revisionId) {
|
|
33
|
-
revisionId = revision;
|
|
34
|
-
sig.value = newValue;
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
set: (newValue) => {
|
|
38
|
-
if (sig.peek() !== newValue) {
|
|
39
|
-
revisionId = generateRevisionId();
|
|
40
|
-
sig.value = newValue;
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
subscribe: (sfn) => sig.subscribe(sfn),
|
|
44
|
-
id,
|
|
45
|
-
isSignal: true,
|
|
46
|
-
getRevision: () => revisionId,
|
|
47
|
-
readonly,
|
|
48
|
-
};
|
|
49
|
-
return signal;
|
|
50
|
-
}
|
|
51
|
-
getSignals() {
|
|
52
|
-
return Array.from(this.signalsStore.values());
|
|
53
|
-
}
|
|
54
|
-
clearSignalsRegistry() {
|
|
55
|
-
this.signalsStore.clear();
|
|
56
|
-
this.serviceSignalsRegistry.clear();
|
|
57
|
-
this.replicators = [];
|
|
58
|
-
}
|
|
59
|
-
_createSignal(initialValue, id = generateSignalId(), readonly = false) {
|
|
60
|
-
const innerSignal = this.createInnerSignal(initialValue, id, readonly);
|
|
61
|
-
this.signalsStore.set(innerSignal.id, innerSignal);
|
|
62
|
-
innerSignal.subscribe((newValue) => {
|
|
63
|
-
this.replicators.forEach((replicator) => replicator(innerSignal.id, newValue, innerSignal.getRevision()));
|
|
64
|
-
});
|
|
65
|
-
return toPublicSignal(innerSignal);
|
|
66
|
-
}
|
|
67
|
-
setOrCreateSignal(id, initialValue, readonly = false) {
|
|
68
|
-
const existingSignal = this.signalsStore.get(id);
|
|
69
|
-
if (existingSignal) {
|
|
70
|
-
return toPublicSignal(existingSignal);
|
|
71
|
-
}
|
|
72
|
-
return this._createSignal(initialValue, id, readonly);
|
|
73
|
-
}
|
|
74
|
-
createSignal(initialValue, id) {
|
|
75
|
-
return this._createSignal(initialValue, id);
|
|
76
|
-
}
|
|
77
|
-
createComputedSignal(fn, id = generateSignalId()) {
|
|
78
|
-
const sig = pcomputed(fn);
|
|
79
|
-
const signal = {
|
|
80
|
-
get: () => sig.value,
|
|
81
|
-
peek: () => sig.peek(),
|
|
82
|
-
id,
|
|
83
|
-
subscribe: (sfn) => sig.subscribe(sfn),
|
|
84
|
-
isSignal: true,
|
|
85
|
-
};
|
|
86
|
-
// a replica of the signal that can be used to subscribe to the computed signal and set the value
|
|
87
|
-
const replicaSignal = this.createInnerSignal(sig.peek(), id, true);
|
|
88
|
-
this.signalsStore.set(signal.id, replicaSignal);
|
|
89
|
-
sig.subscribe((newValue) => {
|
|
90
|
-
replicaSignal.set(newValue);
|
|
91
|
-
this.replicators.forEach((replicator) => {
|
|
92
|
-
try {
|
|
93
|
-
replicator(signal.id, newValue, replicaSignal.getRevision());
|
|
94
|
-
}
|
|
95
|
-
catch (e) {
|
|
96
|
-
console.error(`Error replicating signal ${signal.id}`, e);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
return signal;
|
|
101
|
-
}
|
|
102
|
-
getSignalById(id) {
|
|
103
|
-
return this.signalsStore.get(id);
|
|
104
|
-
}
|
|
105
|
-
addReplicator(replicator) {
|
|
106
|
-
this.replicators.push(replicator);
|
|
107
|
-
}
|
|
108
|
-
getServiceSignals(serviceId) {
|
|
109
|
-
return this.serviceSignalsRegistry.get(serviceId);
|
|
110
|
-
}
|
|
111
|
-
setServiceSignals(serviceId, signals) {
|
|
112
|
-
this.serviceSignalsRegistry.set(serviceId, signals);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export const createSignalsRegistry = () => new SignalsRegistry();
|