- Modified:
  - cli.runNopeBackend: added the flag "noBaseServices" to prevent providing the base-services
  - communication.getLayer.nodejs/browser: adding default value for logger
  - dispatcher.getDispatcher: changed option "constructorClass" to "dispatcherConstructorClass"
  - helpers.limit.spec: Adapted Timings
  - loader.getPackageLoader.nodejs/browser: Changed the options.
This commit is contained in:
Martin Karkowski 2022-04-08 08:10:39 +02:00
parent ee1d690dc8
commit 4791914998
10 changed files with 97 additions and 45 deletions

View File

@ -44,5 +44,13 @@ Inital commit, which is working with the browser
# 1.0.32
- Fixes:
- helpers.singleton: work with `Symbol.for`
- symbols.symbols: work with `Symbol.for`
- helpers.singleton: work with `Symbol.for` --> Can be used in different systems now.
- symbols.symbols: work with `Symbol.for` --> Can be used in different systems now.
# 1.0.33
- Modified:
- cli.runNopeBackend: added the flag "noBaseServices" to prevent providing the base-services
- communication.getLayer.nodejs/browser: adding default value for logger
- dispatcher.getDispatcher: changed option "constructorClass" to "dispatcherConstructorClass"
- helpers.limit.spec: Adapted Timings
- loader.getPackageLoader.nodejs/browser: Changed the options.

View File

@ -1 +1 @@
1.0.32
1.0.33

View File

@ -57,12 +57,12 @@ export interface RunArgs {
forceUsingSelectors: boolean;
// Define the Timingsparameter
timings: Partial<INopeINopeConnectivityTimeOptions>;
// Forces the Selectors
forceSelectors: boolean;
// The Id to use.
id: string;
// Flag to enable profiling. Defaults to false.
profile: boolean;
// Flag to controll whether base-services should be loaded or not.
useBaseServices: boolean;
}
export const DEFAULT_SETTINGS: RunArgs = {
@ -75,13 +75,13 @@ export const DEFAULT_SETTINGS: RunArgs = {
dispatcherLogLevel: "info",
communicationLogLevel: "info",
delay: 2,
forceSelectors: false,
timings: {},
defaultSelector: "first",
forceUsingSelectors: false,
logToFile: false,
id: generateId(),
profile: false,
useBaseServices: false,
};
/**
@ -225,6 +225,13 @@ export async function readInArgs(
dest: "profile",
});
parser.add_argument("--noBaseServices", {
help: "Flag to enable prevent the base Services to be loaded",
action: "append",
nargs: "?",
dest: "useBaseServices",
});
const args: RunArgs = parser.parse_args();
if (args.params === "not-provided") {
@ -235,6 +242,7 @@ export async function readInArgs(
args.profile = Array.isArray(args.profile);
args.logToFile = Array.isArray(args.logToFile);
args.forceUsingSelectors = Array.isArray(args.forceUsingSelectors);
args.useBaseServices = !Array.isArray(args.useBaseServices);
return Object.assign(args, forcedArgs);
}
@ -403,7 +411,10 @@ export async function runNopeBackend(
forceUsingSelectors: args.forceUsingSelectors,
id: args.id,
},
_args.singleton
{
singleton: _args.singleton,
useBaseServices: _args.useBaseServices,
}
);
// Add the Dispatcher

View File

@ -35,13 +35,13 @@ export const layerDefaultParameters = {
* @export
* @param {validLayerOrMirror} layer the layer to add
* @param {(number | string)} [parameter=null] the parameter required for the additonal layer / mirror
* @param {LoggerLevel} level the level of the debugger
* @param {LoggerLevel} [level=false] the level of the debugger
* @return {*} {ICommunicationBridge}
*/
export function getLayer(
layer: validLayerOrMirror,
parameter: number | string = null,
logger: ValidLoggerDefinition
logger: ValidLoggerDefinition = false
): ICommunicationBridge {
// Create the Bridge
const communicationBridge = new Bridge(generateId(), logger);

View File

@ -44,13 +44,13 @@ export const layerDefaultParameters = {
* @export
* @param {validLayerOrMirror} layer the layer to add
* @param {(number | string)} [parameter=null] the parameter required for the additonal layer / mirror
* @param {LoggerLevel} logger the level of the debugger
* @param {LoggerLevel} [logger=false] the level of the debugger
* @return {*} {ICommunicationBridge}
*/
export function getLayer(
layer: validLayerOrMirror,
parameter: number | string = null,
logger: ValidLoggerDefinition
logger: ValidLoggerDefinition = false
): ICommunicationBridge {
// Create the Bridge
const communicationBridge = new Bridge(generateId(), logger);

View File

@ -1,9 +1,6 @@
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-11-06 08:52:48
* @modify date 2022-01-10 14:17:09
* @desc [description]
*/
import { getSingleton } from "../helpers/singletonMethod";
@ -18,26 +15,31 @@ import { addAllBaseServices } from "./baseServices";
import { NopeDispatcher } from "./nopeDispatcher";
/**
* Function to extract a Singleton Dispatcher
* @param dispatcherOptions The provided options for the Dispatcher
*
* @param {INopeDispatcherOptions} dispatcherOptions The options, that will be used for the dispathcer.
* @param options Additional Options. You can provide a different Dispatcher-Class; Controll the scope (Singleton or not.) and define wehter the Base-Services should be added.
* @returns {INopeDispatcher} The dispatcher.
*
* ```typescript
*
* // Create a communication layer:
* const communicator = getLayer("event");
* // Now create the Dispatcher.
* const dispatcher = getDispatcher({communicator});
* ```
*/
export function getDispatcher(
dispatcherOptions: INopeDispatcherOptions,
options: {
constructorClass?: IDispatcherConstructor;
dispatcherConstructorClass?: IDispatcherConstructor;
singleton?: boolean;
useBaseServices?: boolean;
} = {}
): INopeDispatcher {
if (
options.constructorClass === null ||
options.constructorClass === undefined
options.dispatcherConstructorClass === null ||
options.dispatcherConstructorClass === undefined
) {
options.constructorClass = NopeDispatcher;
options.dispatcherConstructorClass = NopeDispatcher;
}
options = Object.assign(
@ -50,7 +52,7 @@ export function getDispatcher(
);
const create = () => {
const dispatcher = new options.constructorClass(
const dispatcher = new options.dispatcherConstructorClass(
dispatcherOptions,
() => new NopeObservable()
);

View File

@ -20,7 +20,7 @@ describe("limit", function () {
const promises = [f(100), f(100)];
await Promise.all(promises);
const end = Date.now();
if (end - start < 120) {
if (end - start < 200) {
throw Error("Failed to call sync");
}
});
@ -32,7 +32,7 @@ describe("limit", function () {
const promises = [f(100), f(100)];
await Promise.all(promises);
const end = Date.now();
if (end - start > 120) {
if (end - start > 200) {
throw Error("Failed to call parallel");
}
});

View File

@ -5,6 +5,7 @@
import { getSingleton } from "../helpers/singletonMethod";
import {
IDispatcherConstructor,
INopeDispatcherOptions,
INopePackageLoader,
INopePackageLoaderConstructor,
@ -13,25 +14,46 @@ import { generateNopeBasicPackage } from "./generateNopeBasicPackage";
import { NopePackageLoader } from "./nopePackageLoader";
/**
* Function to extract a Singleton Dispatcher
* @param options The provided options for the Dispatcher
* Function to extract the Package-Loader.
* @param {INopeDispatcherOptions} dispatcherOptions The provided options for the Dispatcher
* @param options Settings for the creation of the Dispatcher etc.
* @returns {INopePackageLoader} The Package loader.
*/
export function getPackageLoader(
options: INopeDispatcherOptions,
singleton = true,
constructorClass: INopePackageLoaderConstructor = null
dispatcherOptions: INopeDispatcherOptions,
options: {
packageLoaderConstructorClass?: INopePackageLoaderConstructor;
dispatcherConstructorClass?: IDispatcherConstructor;
singleton?: boolean;
useBaseServices?: boolean;
} = {}
): INopePackageLoader {
if (constructorClass === null || constructorClass === undefined) {
constructorClass = NopePackageLoader;
if (
options.packageLoaderConstructorClass === null ||
options.packageLoaderConstructorClass === undefined
) {
options.packageLoaderConstructorClass = NopePackageLoader;
}
options = Object.assign(
{
packageLoaderConstructorClass: null,
dispatcherConstructorClass: null,
singleton: true,
useBaseServices: true,
},
options
);
const create = () => {
// Create a loader
const loader = new constructorClass();
const loader = new options.packageLoaderConstructorClass();
// load the default Package:
loader
.addPackage(generateNopeBasicPackage(options, singleton))
.addPackage(
generateNopeBasicPackage(dispatcherOptions, options.singleton)
)
.catch((e) => {
throw e;
});
@ -39,7 +61,7 @@ export function getPackageLoader(
return loader;
};
if (singleton) {
if (options.singleton) {
// Create a singaleton if required.
// use the container to receive the
// singleton object

View File

@ -4,21 +4,30 @@
* @desc [description]
*/
import { INopeDispatcherOptions } from "../types/nope/nopeDispatcher.interface";
import { INopePackageLoaderConstructor } from "../index.browser";
import {
IDispatcherConstructor,
INopeDispatcherOptions,
} from "../types/nope/nopeDispatcher.interface";
import { getPackageLoader as getBrowserPackageLoader } from "./getPackageLoader.browser";
import { NopePackageLoaderFileAccess } from "./nopePackageLoader.nodejs";
/**
* Function to extract a Singleton Dispatcher
* @param options The provided options for the Dispatcher
* Function to extract the Package-Loader. This one here includes file access.
* @param {INopeDispatcherOptions} dispatcherOptions The provided options for the Dispatcher
* @param options Settings for the creation of the Dispatcher etc.
* @returns {INopePackageLoader} The Package loader.
*/
export function getPackageLoader(
options: INopeDispatcherOptions,
singleton = true
dispatcherOptions: INopeDispatcherOptions,
options: {
packageLoaderConstructorClass?: INopePackageLoaderConstructor;
dispatcherConstructorClass?: IDispatcherConstructor;
singleton?: boolean;
useBaseServices?: boolean;
} = {}
) {
return getBrowserPackageLoader(
options,
singleton,
NopePackageLoaderFileAccess
);
options.packageLoaderConstructorClass = NopePackageLoaderFileAccess;
return getBrowserPackageLoader(dispatcherOptions, options);
}

View File

@ -1,6 +1,6 @@
{
"name": "nope",
"version": "1.0.31",
"version": "1.0.33",
"description": "NoPE Runtime for Nodejs. For Browser-Support please use nope-browser",
"files": [
"dist-nodejs/**/*",