refactor: core, http & platform-webworker to remove public private class separation (#19143)
The private classes `ApplicationRef_`, `PlatformRef_`, `JSONPConnection_`, `JSONPBackend_`, `ClientMessageBrokerFactory_`, `ServiceMessageBroker_`, `ClientMessageBroker_` and `ServiceMessageBrokerFactory_` have been removed and merged into their public equivalents. The size of the minified umd bundles have been slightly decreased: | package | before | after | | -------------------|------------|------------| | core | 217.791 kb | 217.144 kb | | http | 33.260 kb | 32.838 kb | | platform-webworker | 56.015 kb | 54.933 kb | PR Close #19143
This commit is contained in:

committed by
Matias Niemelä

parent
0c44e733ad
commit
b6431c60e6
@ -10,24 +10,16 @@ import {EventEmitter, Injectable, Type, ɵstringify as stringify} from '@angular
|
||||
import {MessageBus} from './message_bus';
|
||||
import {Serializer, SerializerTypes} from './serializer';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @experimental WebWorker support in Angular is experimental.
|
||||
*/
|
||||
export abstract class ClientMessageBrokerFactory {
|
||||
/**
|
||||
* Initializes the given channel and attaches a new {@link ClientMessageBroker} to it.
|
||||
*/
|
||||
abstract createMessageBroker(channel: string, runInZone?: boolean): ClientMessageBroker;
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class ClientMessageBrokerFactory_ extends ClientMessageBrokerFactory {
|
||||
export class ClientMessageBrokerFactory {
|
||||
/** @internal */
|
||||
_serializer: Serializer;
|
||||
|
||||
/** @internal */
|
||||
constructor(private _messageBus: MessageBus, _serializer: Serializer) {
|
||||
super();
|
||||
this._serializer = _serializer;
|
||||
}
|
||||
|
||||
@ -36,31 +28,26 @@ export class ClientMessageBrokerFactory_ extends ClientMessageBrokerFactory {
|
||||
*/
|
||||
createMessageBroker(channel: string, runInZone: boolean = true): ClientMessageBroker {
|
||||
this._messageBus.initChannel(channel, runInZone);
|
||||
return new ClientMessageBroker_(this._messageBus, this._serializer, channel);
|
||||
return new ClientMessageBroker(this._messageBus, this._serializer, channel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @experimental WebWorker support in Angular is experimental.
|
||||
*/
|
||||
export abstract class ClientMessageBroker {
|
||||
abstract runOnService(args: UiArguments, returnType: Type<any>|SerializerTypes|null):
|
||||
Promise<any>|null;
|
||||
}
|
||||
|
||||
interface PromiseCompleter {
|
||||
resolve: (result: any) => void;
|
||||
reject: (err: any) => void;
|
||||
}
|
||||
|
||||
export class ClientMessageBroker_ extends ClientMessageBroker {
|
||||
/**
|
||||
* @experimental WebWorker support in Angular is experimental.
|
||||
*/
|
||||
export class ClientMessageBroker {
|
||||
private _pending = new Map<string, PromiseCompleter>();
|
||||
private _sink: EventEmitter<any>;
|
||||
/** @internal */
|
||||
public _serializer: Serializer;
|
||||
|
||||
constructor(messageBus: MessageBus, _serializer: Serializer, public channel: any) {
|
||||
super();
|
||||
/** @internal */
|
||||
constructor(messageBus: MessageBus, _serializer: Serializer, private channel: any) {
|
||||
this._sink = messageBus.to(channel);
|
||||
this._serializer = _serializer;
|
||||
const source = messageBus.from(channel);
|
||||
@ -79,7 +66,7 @@ export class ClientMessageBroker_ extends ClientMessageBroker {
|
||||
return id;
|
||||
}
|
||||
|
||||
runOnService(args: UiArguments, returnType: Type<any>|SerializerTypes): Promise<any>|null {
|
||||
runOnService(args: UiArguments, returnType: Type<any>|SerializerTypes|null): Promise<any>|null {
|
||||
const fnArgs: any[] = [];
|
||||
if (args.args) {
|
||||
args.args.forEach(argument => {
|
||||
|
@ -14,26 +14,22 @@ import {Serializer, SerializerTypes} from '../shared/serializer';
|
||||
/**
|
||||
* @experimental WebWorker support in Angular is currently experimental.
|
||||
*/
|
||||
export abstract class ServiceMessageBrokerFactory {
|
||||
/**
|
||||
* Initializes the given channel and attaches a new {@link ServiceMessageBroker} to it.
|
||||
*/
|
||||
abstract createMessageBroker(channel: string, runInZone?: boolean): ServiceMessageBroker;
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class ServiceMessageBrokerFactory_ extends ServiceMessageBrokerFactory {
|
||||
export class ServiceMessageBrokerFactory {
|
||||
/** @internal */
|
||||
_serializer: Serializer;
|
||||
|
||||
/** @internal */
|
||||
constructor(private _messageBus: MessageBus, _serializer: Serializer) {
|
||||
super();
|
||||
this._serializer = _serializer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the given channel and attaches a new {@link ServiceMessageBroker} to it.
|
||||
*/
|
||||
createMessageBroker(channel: string, runInZone: boolean = true): ServiceMessageBroker {
|
||||
this._messageBus.initChannel(channel, runInZone);
|
||||
return new ServiceMessageBroker_(this._messageBus, this._serializer, channel);
|
||||
return new ServiceMessageBroker(this._messageBus, this._serializer, channel);
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,25 +41,19 @@ export class ServiceMessageBrokerFactory_ extends ServiceMessageBrokerFactory {
|
||||
*
|
||||
* @experimental WebWorker support in Angular is currently experimental.
|
||||
*/
|
||||
export abstract class ServiceMessageBroker {
|
||||
abstract registerMethod(
|
||||
methodName: string, signature: Array<Type<any>|SerializerTypes>|null, method: Function,
|
||||
returnType?: Type<any>|SerializerTypes): void;
|
||||
}
|
||||
|
||||
export class ServiceMessageBroker_ extends ServiceMessageBroker {
|
||||
export class ServiceMessageBroker {
|
||||
private _sink: EventEmitter<any>;
|
||||
private _methods = new Map<string, Function>();
|
||||
|
||||
constructor(messageBus: MessageBus, private _serializer: Serializer, public channel: string) {
|
||||
super();
|
||||
/** @internal */
|
||||
constructor(messageBus: MessageBus, private _serializer: Serializer, private channel: string) {
|
||||
this._sink = messageBus.to(channel);
|
||||
const source = messageBus.from(channel);
|
||||
source.subscribe({next: (message: any) => this._handleMessage(message)});
|
||||
}
|
||||
|
||||
registerMethod(
|
||||
methodName: string, signature: Array<Type<any>|SerializerTypes>,
|
||||
methodName: string, signature: Array<Type<any>|SerializerTypes>|null,
|
||||
method: (..._: any[]) => Promise<any>| void, returnType?: Type<any>|SerializerTypes): void {
|
||||
this._methods.set(methodName, (message: ReceivedMessage) => {
|
||||
const serializedArgs = message.args;
|
||||
@ -71,7 +61,7 @@ export class ServiceMessageBroker_ extends ServiceMessageBroker {
|
||||
const deserializedArgs = new Array(numArgs);
|
||||
for (let i = 0; i < numArgs; i++) {
|
||||
const serializedArg = serializedArgs[i];
|
||||
deserializedArgs[i] = this._serializer.deserialize(serializedArg, signature[i]);
|
||||
deserializedArgs[i] = this._serializer.deserialize(serializedArg, signature ![i]);
|
||||
}
|
||||
|
||||
const promise = method(...deserializedArgs);
|
||||
|
@ -11,12 +11,12 @@ import {APP_INITIALIZER, ApplicationModule, ErrorHandler, NgModule, NgZone, PLAT
|
||||
import {DOCUMENT, ɵBROWSER_SANITIZATION_PROVIDERS as BROWSER_SANITIZATION_PROVIDERS} from '@angular/platform-browser';
|
||||
|
||||
import {ON_WEB_WORKER} from './web_workers/shared/api';
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from './web_workers/shared/client_message_broker';
|
||||
import {ClientMessageBrokerFactory} from './web_workers/shared/client_message_broker';
|
||||
import {MessageBus} from './web_workers/shared/message_bus';
|
||||
import {PostMessageBus, PostMessageBusSink, PostMessageBusSource} from './web_workers/shared/post_message_bus';
|
||||
import {RenderStore} from './web_workers/shared/render_store';
|
||||
import {Serializer} from './web_workers/shared/serializer';
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBrokerFactory_} from './web_workers/shared/service_message_broker';
|
||||
import {ServiceMessageBrokerFactory} from './web_workers/shared/service_message_broker';
|
||||
import {WebWorkerRendererFactory2} from './web_workers/worker/renderer';
|
||||
import {WorkerDomAdapter} from './web_workers/worker/worker_adapter';
|
||||
|
||||
@ -62,8 +62,8 @@ export function setupWebWorker(): void {
|
||||
BROWSER_SANITIZATION_PROVIDERS,
|
||||
Serializer,
|
||||
{provide: DOCUMENT, useValue: null},
|
||||
{provide: ClientMessageBrokerFactory, useClass: ClientMessageBrokerFactory_},
|
||||
{provide: ServiceMessageBrokerFactory, useClass: ServiceMessageBrokerFactory_},
|
||||
ClientMessageBrokerFactory,
|
||||
ServiceMessageBrokerFactory,
|
||||
WebWorkerRendererFactory2,
|
||||
{provide: RendererFactory2, useExisting: WebWorkerRendererFactory2},
|
||||
{provide: ON_WEB_WORKER, useValue: true},
|
||||
|
@ -11,12 +11,12 @@ import {ErrorHandler, Injectable, InjectionToken, Injector, NgZone, PLATFORM_ID,
|
||||
import {DOCUMENT, EVENT_MANAGER_PLUGINS, EventManager, HAMMER_GESTURE_CONFIG, HammerGestureConfig, ɵBROWSER_SANITIZATION_PROVIDERS as BROWSER_SANITIZATION_PROVIDERS, ɵBrowserDomAdapter as BrowserDomAdapter, ɵBrowserGetTestability as BrowserGetTestability, ɵDomEventsPlugin as DomEventsPlugin, ɵDomRendererFactory2 as DomRendererFactory2, ɵDomSharedStylesHost as DomSharedStylesHost, ɵHammerGesturesPlugin as HammerGesturesPlugin, ɵKeyEventsPlugin as KeyEventsPlugin, ɵSharedStylesHost as SharedStylesHost, ɵgetDOM as getDOM} from '@angular/platform-browser';
|
||||
|
||||
import {ON_WEB_WORKER} from './web_workers/shared/api';
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from './web_workers/shared/client_message_broker';
|
||||
import {ClientMessageBrokerFactory} from './web_workers/shared/client_message_broker';
|
||||
import {MessageBus} from './web_workers/shared/message_bus';
|
||||
import {PostMessageBus, PostMessageBusSink, PostMessageBusSource} from './web_workers/shared/post_message_bus';
|
||||
import {RenderStore} from './web_workers/shared/render_store';
|
||||
import {Serializer} from './web_workers/shared/serializer';
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBrokerFactory_} from './web_workers/shared/service_message_broker';
|
||||
import {ServiceMessageBrokerFactory} from './web_workers/shared/service_message_broker';
|
||||
import {MessageBasedRenderer2} from './web_workers/ui/renderer';
|
||||
|
||||
|
||||
@ -85,12 +85,12 @@ export const _WORKER_UI_PLATFORM_PROVIDERS: StaticProvider[] = [
|
||||
{provide: SharedStylesHost, useExisting: DomSharedStylesHost},
|
||||
{
|
||||
provide: ServiceMessageBrokerFactory,
|
||||
useClass: ServiceMessageBrokerFactory_,
|
||||
useClass: ServiceMessageBrokerFactory,
|
||||
deps: [MessageBus, Serializer]
|
||||
},
|
||||
{
|
||||
provide: ClientMessageBrokerFactory,
|
||||
useClass: ClientMessageBrokerFactory_,
|
||||
useClass: ClientMessageBrokerFactory,
|
||||
deps: [MessageBus, Serializer]
|
||||
},
|
||||
{provide: Serializer, deps: [RenderStore]},
|
||||
|
@ -10,7 +10,7 @@ import {beforeEach, beforeEachProviders, describe, expect, inject, it} from '@an
|
||||
import {ON_WEB_WORKER} from '@angular/platform-webworker/src/web_workers/shared/api';
|
||||
import {RenderStore} from '@angular/platform-webworker/src/web_workers/shared/render_store';
|
||||
import {Serializer, SerializerTypes} from '@angular/platform-webworker/src/web_workers/shared/serializer';
|
||||
import {ServiceMessageBroker_} from '@angular/platform-webworker/src/web_workers/shared/service_message_broker';
|
||||
import {ServiceMessageBroker} from '@angular/platform-webworker/src/web_workers/shared/service_message_broker';
|
||||
|
||||
import {createPairedMessageBuses} from './web_worker_test_util';
|
||||
|
||||
@ -34,7 +34,7 @@ export function main() {
|
||||
});
|
||||
it('should call registered method with correct arguments',
|
||||
inject([Serializer], (serializer: Serializer) => {
|
||||
const broker = new ServiceMessageBroker_(messageBuses.ui, serializer, CHANNEL);
|
||||
const broker = new ServiceMessageBroker(messageBuses.ui, serializer, CHANNEL);
|
||||
broker.registerMethod(
|
||||
TEST_METHOD, [SerializerTypes.PRIMITIVE, SerializerTypes.PRIMITIVE], (arg1, arg2) => {
|
||||
expect(arg1).toEqual(PASSED_ARG_1);
|
||||
@ -47,7 +47,7 @@ export function main() {
|
||||
}));
|
||||
|
||||
it('should return promises to the worker', inject([Serializer], (serializer: Serializer) => {
|
||||
const broker = new ServiceMessageBroker_(messageBuses.ui, serializer, CHANNEL);
|
||||
const broker = new ServiceMessageBroker(messageBuses.ui, serializer, CHANNEL);
|
||||
broker.registerMethod(TEST_METHOD, [SerializerTypes.PRIMITIVE], (arg1) => {
|
||||
expect(arg1).toEqual(PASSED_ARG_1);
|
||||
return new Promise((res, rej) => {
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
import {Type} from '@angular/core';
|
||||
import {NgZone} from '@angular/core/src/zone/ng_zone';
|
||||
import {ClientMessageBroker, ClientMessageBrokerFactory_, UiArguments} from '@angular/platform-webworker/src/web_workers/shared/client_message_broker';
|
||||
import {ClientMessageBroker, ClientMessageBrokerFactory, UiArguments} from '@angular/platform-webworker/src/web_workers/shared/client_message_broker';
|
||||
import {MessageBus, MessageBusSink, MessageBusSource} from '@angular/platform-webworker/src/web_workers/shared/message_bus';
|
||||
import {SpyMessageBroker} from '../worker/spies';
|
||||
|
||||
@ -130,7 +130,7 @@ export class MockMessageBus extends MessageBus {
|
||||
attachToZone(zone: NgZone) {}
|
||||
}
|
||||
|
||||
export class MockMessageBrokerFactory extends ClientMessageBrokerFactory_ {
|
||||
export class MockMessageBrokerFactory extends ClientMessageBrokerFactory {
|
||||
constructor(private _messageBroker: ClientMessageBroker) { super(null !, null !); }
|
||||
createMessageBroker(channel: string, runInZone = true) { return this._messageBroker; }
|
||||
}
|
||||
|
@ -15,10 +15,10 @@ import {BrowserTestingModule} from '@angular/platform-browser/testing';
|
||||
import {dispatchEvent} from '@angular/platform-browser/testing/src/browser_util';
|
||||
import {expect} from '@angular/platform-browser/testing/src/matchers';
|
||||
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from '../../../src/web_workers/shared/client_message_broker';
|
||||
import {ClientMessageBrokerFactory} from '../../../src/web_workers/shared/client_message_broker';
|
||||
import {RenderStore} from '../../../src/web_workers/shared/render_store';
|
||||
import {Serializer} from '../../../src/web_workers/shared/serializer';
|
||||
import {ServiceMessageBrokerFactory_} from '../../../src/web_workers/shared/service_message_broker';
|
||||
import {ServiceMessageBrokerFactory} from '../../../src/web_workers/shared/service_message_broker';
|
||||
import {MessageBasedRenderer2} from '../../../src/web_workers/ui/renderer';
|
||||
import {WebWorkerRendererFactory2} from '../../../src/web_workers/worker/renderer';
|
||||
import {PairedMessageBuses, createPairedMessageBuses} from '../shared/web_worker_test_util';
|
||||
@ -180,10 +180,10 @@ function createWebWorkerBrokerFactory(
|
||||
const wwMessageBus = messageBuses.worker;
|
||||
|
||||
// set up the worker side
|
||||
const wwBrokerFactory = new ClientMessageBrokerFactory_(wwMessageBus, wwSerializer);
|
||||
const wwBrokerFactory = new ClientMessageBrokerFactory(wwMessageBus, wwSerializer);
|
||||
|
||||
// set up the ui side
|
||||
const uiBrokerFactory = new ServiceMessageBrokerFactory_(uiMessageBus, uiSerializer);
|
||||
const uiBrokerFactory = new ServiceMessageBrokerFactory(uiMessageBus, uiSerializer);
|
||||
const renderer = new MessageBasedRenderer2(
|
||||
uiBrokerFactory, uiMessageBus, uiSerializer, uiRenderStore, domRendererFactory);
|
||||
renderer.start();
|
||||
|
Reference in New Issue
Block a user