UNPKG

@deepkit/framework

Version:

114 lines 6.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrokerMemoryServer = exports.TestingFacade = exports.TestHttpResponse = void 0; exports.createTestingApp = createTestingApp; /*@ts-ignore*/ const { __ΩLogMessage } = require('@deepkit/logger'); /*@ts-ignore*/ const { __ΩClassType } = require('@deepkit/core'); function __assignType(fn, args) { fn.__type = args; return fn; } /* * Deepkit Framework * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt * * This program is free software: you can redistribute it and/or modify * it under the terms of the MIT License. * * You should have received a copy of the MIT License along with this program. */ const broker_1 = require("@deepkit/broker"); const logger_1 = require("@deepkit/logger"); const orm_1 = require("@deepkit/orm"); const application_server_js_1 = require("./application-server.js"); const broker_js_1 = require("./broker/broker.js"); const app_1 = require("@deepkit/app"); const worker_js_1 = require("./worker.js"); const http_1 = require("@deepkit/http"); const rpc_1 = require("@deepkit/rpc"); const module_js_1 = require("./module.js"); const broker_js_2 = require("./debug/broker.js"); /** * @deprecated use {@link MemoryHttpResponse} instead */ class TestHttpResponse extends http_1.MemoryHttpResponse { } exports.TestHttpResponse = TestHttpResponse; TestHttpResponse.__type = [() => http_1.MemoryHttpResponse, 'TestHttpResponse', 'P7!5w"']; class TestingFacade { constructor(app) { this.app = app; } getLogger() { return this.app.get(logger_1.MemoryLoggerTransport); } async startServer() { await this.app.get(application_server_js_1.ApplicationServer).start(); } async stopServer(graceful = false) { await this.app.get(application_server_js_1.ApplicationServer).close(graceful); } async request(requestBuilder) { const request = requestBuilder.build(); const response = new http_1.MemoryHttpResponse(request); await this.app.get(application_server_js_1.ApplicationServer).getHttpWorker().handleRequest(request, response); return response; } createRpcClient() { return this.app.get(application_server_js_1.ApplicationServer).createClient(); } getLogMessages() { return this.app.get(logger_1.MemoryLoggerTransport).messages; } } exports.TestingFacade = TestingFacade; TestingFacade.__type = ['A', 'app', 'constructor', () => logger_1.MemoryLoggerTransport, 'getLogger', 'startServer', 'graceful', 'stopServer', () => http_1.RequestBuilder, 'requestBuilder', () => http_1.MemoryHttpResponse, 'request', () => rpc_1.RpcClient, 'createRpcClient', () => __ΩLogMessage, 'getLogMessages', 'TestingFacade', 'b!Pe"!2":"0#PP7$0%P"0&P"2\'"0(PP7)2*P7+`0,PP7-0.Pn/F005w1']; class BrokerMemoryServer extends broker_js_1.BrokerServer { constructor() { super(...arguments); this.kernel = new broker_1.BrokerKernel(); } async start() { } async stop() { } } exports.BrokerMemoryServer = BrokerMemoryServer; BrokerMemoryServer.__type = [() => broker_js_1.BrokerServer, 'kernel', function () { return new broker_1.BrokerKernel(); }, 'start', 'stop', 'BrokerMemoryServer', 'P7!!3">#P"0$P"0%5w&']; /** * Creates a new App instance, but with kernel services in place that work in memory. * For example RPC/Broker/HTTP communication without TCP stack. Logger uses MemoryLogger. */ function createTestingApp(options, entities = [], setup) { const module = new app_1.RootAppModule({}, options); (module.configureProvider.Ω = [[() => logger_1.Logger, 'P7!']], module.configureProvider(__assignType((v, t) => v.removeTransport(t), ['v', () => logger_1.ConsoleTransport, 't', '', 'P"2!P7"2#"/$']))); (module.configureProvider.Ω = [[() => logger_1.Logger, 'P7!']], module.configureProvider(__assignType((v, t) => v.addTransport(t), ['v', () => logger_1.MemoryLoggerTransport, 't', '', 'P"2!P7"2#"/$']))); module.addProvider({ provide: worker_js_1.WebWorkerFactory, useClass: worker_js_1.WebMemoryWorkerFactory }); //don't start HTTP-server module.addProvider({ provide: broker_js_1.BrokerServer, useExisting: BrokerMemoryServer }); //don't start Broker TCP-server module.addProvider(BrokerMemoryServer); module.addProvider(logger_1.MemoryLoggerTransport); module.addProvider({ provide: broker_1.BrokerDeepkitAdapter, useFactory: __assignType((server) => { const transport = new rpc_1.RpcDirectClientAdapter(server.kernel); return new broker_1.BrokerDeepkitAdapter({ servers: [{ url: '', transport }] }); }, [() => BrokerMemoryServer, 'server', '', 'PP7!2""/#']) }); module.addProvider({ provide: broker_1.BrokerCache, useFactory: __assignType((adapter) => new broker_1.BrokerCache(adapter), [() => broker_1.BrokerDeepkitAdapter, 'adapter', '', 'PP7!2""/#']) }); module.addProvider({ provide: broker_1.BrokerLock, useFactory: __assignType((adapter) => new broker_1.BrokerLock(adapter), [() => broker_1.BrokerDeepkitAdapter, 'adapter', '', 'PP7!2""/#']) }); module.addProvider({ provide: broker_1.BrokerQueue, useFactory: __assignType((adapter) => new broker_1.BrokerQueue(adapter), [() => broker_1.BrokerDeepkitAdapter, 'adapter', '', 'PP7!2""/#']) }); module.addProvider({ provide: broker_1.BrokerBus, useFactory: __assignType((adapter) => new broker_1.BrokerBus(adapter), [() => broker_1.BrokerDeepkitAdapter, 'adapter', '', 'PP7!2""/#']) }); module.addProvider({ provide: broker_js_2.DebugBrokerBus, useFactory: __assignType((adapter) => new broker_1.BrokerBus(adapter), [() => broker_1.BrokerDeepkitAdapter, 'adapter', '', 'PP7!2""/#']) }); if (!module.hasImport(module_js_1.FrameworkModule)) module.addImportAtBeginning(new module_js_1.FrameworkModule); if (entities.length) { module.addProvider({ provide: orm_1.Database, useValue: new orm_1.Database(new orm_1.MemoryDatabaseAdapter, entities) }); (module.configureProvider.Ω = [[() => orm_1.DatabaseRegistry, 'P7!']], module.configureProvider(__assignType(v => v.addDatabase(orm_1.Database, {}, module), ['v', '', 'P"2!"/"']))); } if (setup) module.setup(setup); return new TestingFacade(app_1.App.fromModule(module)); } createTestingApp.__type = ['options', () => __ΩClassType, 'entities', () => [], () => app_1.AppModule, 'module', '', 'setup', () => app_1.App, () => TestingFacade, 'createTestingApp', 'P"2!n"F2#>$PP"7%2&$/\'2(8PP"7)7*/+']; //# sourceMappingURL=testing.js.map