@cspell/cspell-service-bus
Advanced tools
Comparing version 6.4.2 to 6.5.0
@@ -1,2 +0,2 @@ | ||
import { IsARequest, RequestResponseType, ServiceRequest, ServiceRequestFactory } from './request'; | ||
import { IsARequest, RequestResponseType, ServiceRequest, ServiceRequestFactory, ServiceRequestFactoryRequestType } from './request'; | ||
export interface Dispatcher { | ||
@@ -15,3 +15,3 @@ dispatch<R extends ServiceRequest>(request: R): RequestResponseType<R>; | ||
export declare function createServiceBus(handlers?: Handler[]): ServiceBus; | ||
export declare type HandleRequestFn<R extends ServiceRequest> = (request: R, next: HandleRequestKnown<R>, dispatch: Dispatcher) => RequestResponseType<R>; | ||
export declare type HandleRequestFn<R extends ServiceRequest> = (request: R, next: HandleRequest, dispatch: Dispatcher) => RequestResponseType<R>; | ||
export interface HandleRequest { | ||
@@ -23,2 +23,3 @@ <R extends ServiceRequest>(request: R): any; | ||
} | ||
export declare type FactoryRequestHandler<T extends ServiceRequestFactory<ServiceRequest>, R extends ServiceRequest = ServiceRequestFactoryRequestType<T>> = HandleRequestKnown<R>; | ||
export interface HandlerNext { | ||
@@ -25,0 +26,0 @@ (next: HandleRequest): HandleRequest; |
@@ -1,3 +0,4 @@ | ||
export { ServiceRequest } from './request'; | ||
export { ServiceBus, createServiceBus } from './bus'; | ||
export { createRequestHandler, createServiceBus, ServiceBus } from './bus'; | ||
export { createResponse, createResponseFail, isServiceResponseFailure, isServiceResponseSuccess, ServiceRequest, } from './request'; | ||
export { requestFactory } from './requestFactory'; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.createServiceBus = exports.ServiceBus = exports.ServiceRequest = void 0; | ||
exports.requestFactory = exports.ServiceRequest = exports.isServiceResponseSuccess = exports.isServiceResponseFailure = exports.createResponseFail = exports.createResponse = exports.ServiceBus = exports.createServiceBus = exports.createRequestHandler = void 0; | ||
var bus_1 = require("./bus"); | ||
Object.defineProperty(exports, "createRequestHandler", { enumerable: true, get: function () { return bus_1.createRequestHandler; } }); | ||
Object.defineProperty(exports, "createServiceBus", { enumerable: true, get: function () { return bus_1.createServiceBus; } }); | ||
Object.defineProperty(exports, "ServiceBus", { enumerable: true, get: function () { return bus_1.ServiceBus; } }); | ||
var request_1 = require("./request"); | ||
Object.defineProperty(exports, "createResponse", { enumerable: true, get: function () { return request_1.createResponse; } }); | ||
Object.defineProperty(exports, "createResponseFail", { enumerable: true, get: function () { return request_1.createResponseFail; } }); | ||
Object.defineProperty(exports, "isServiceResponseFailure", { enumerable: true, get: function () { return request_1.isServiceResponseFailure; } }); | ||
Object.defineProperty(exports, "isServiceResponseSuccess", { enumerable: true, get: function () { return request_1.isServiceResponseSuccess; } }); | ||
Object.defineProperty(exports, "ServiceRequest", { enumerable: true, get: function () { return request_1.ServiceRequest; } }); | ||
var bus_1 = require("./bus"); | ||
Object.defineProperty(exports, "ServiceBus", { enumerable: true, get: function () { return bus_1.ServiceBus; } }); | ||
Object.defineProperty(exports, "createServiceBus", { enumerable: true, get: function () { return bus_1.createServiceBus; } }); | ||
var requestFactory_1 = require("./requestFactory"); | ||
Object.defineProperty(exports, "requestFactory", { enumerable: true, get: function () { return requestFactory_1.requestFactory; } }); | ||
//# sourceMappingURL=index.js.map |
@@ -1,13 +0,14 @@ | ||
export interface ServiceRequest<T extends string = string, R = unknown> { | ||
export interface ServiceRequest<T extends string = string, P = unknown, R = unknown> { | ||
readonly type: T; | ||
readonly params: P; | ||
__r?: ServiceResponseBase<R>; | ||
} | ||
declare class BaseServiceRequest<T extends string, R> implements ServiceRequest<T, R> { | ||
declare class BaseServiceRequest<T extends string, P, R> implements ServiceRequest<T, P, R> { | ||
readonly type: T; | ||
readonly params: P; | ||
readonly __r?: ServiceResponseBase<R>; | ||
constructor(type: T); | ||
constructor(type: T, params: P); | ||
} | ||
export declare class ServiceRequest<T extends string, R> extends BaseServiceRequest<T, R> { | ||
readonly type: T; | ||
constructor(type: T); | ||
export declare class ServiceRequest<T extends string, P, R> extends BaseServiceRequest<T, P, R> { | ||
constructor(type: T, params: P); | ||
} | ||
@@ -41,7 +42,11 @@ interface ServiceResponseBase<T> { | ||
}): (t: unknown) => t is T; | ||
export interface ServiceRequestFactory<R extends ServiceRequest, T extends string = R['type']> { | ||
export interface ServiceRequestFactory<R extends ServiceRequest, P = R['params'], T extends string = R['type']> { | ||
type: T; | ||
is: (r: ServiceRequest | R) => r is R; | ||
create(...params: any[]): R; | ||
create(params: P): R; | ||
__request?: R; | ||
} | ||
export declare type ServiceRequestFactoryRequestType<T> = T extends { | ||
__request?: infer R; | ||
} ? R : never; | ||
export declare const __testing__: { | ||
@@ -48,0 +53,0 @@ BaseServiceRequest: typeof BaseServiceRequest; |
@@ -5,10 +5,10 @@ "use strict"; | ||
class BaseServiceRequest { | ||
constructor(type) { | ||
constructor(type, params) { | ||
this.type = type; | ||
this.params = params; | ||
} | ||
} | ||
class ServiceRequest extends BaseServiceRequest { | ||
constructor(type) { | ||
super(type); | ||
this.type = type; | ||
constructor(type, params) { | ||
super(type, params); | ||
} | ||
@@ -15,0 +15,0 @@ } |
@@ -10,20 +10,16 @@ import { Dispatcher, Handler, HandleRequestFn } from './bus'; | ||
export declare function createSystemServiceBus(): SystemServiceBus; | ||
declare const TypeRequestRegisterHandler: "System:RegisterHandler"; | ||
export declare class RequestRegisterHandlerFactory extends ServiceRequest<typeof TypeRequestRegisterHandler, SubsystemServiceBus> { | ||
export declare const RequestRegisterHandlerFactory: ServiceRequestFactory<ServiceRequest<"System:RegisterHandler", { | ||
readonly requestPrefix: string; | ||
readonly handler: Handler; | ||
static type: "System:RegisterHandler"; | ||
private constructor(); | ||
static is(req: ServiceRequest): req is RequestRegisterHandlerFactory; | ||
static create(requestPrefix: string, handler: Handler): RequestRegisterHandlerFactory; | ||
} | ||
declare const TypeRequestCreateSubsystem: "System:CreateSubsystem"; | ||
export declare class RequestCreateSubsystemFactory extends ServiceRequest<typeof TypeRequestCreateSubsystem, SubsystemServiceBus> { | ||
}, SubsystemServiceBus>, { | ||
readonly requestPrefix: string; | ||
readonly handler: Handler; | ||
}, "System:RegisterHandler">; | ||
export declare const RequestCreateSubsystemFactory: ServiceRequestFactory<ServiceRequest<"System:CreateSubsystem", { | ||
readonly name: string; | ||
readonly requestPattern: string | RegExp; | ||
static type: "System:CreateSubsystem"; | ||
private constructor(); | ||
static is(req: ServiceRequest): req is RequestCreateSubsystemFactory; | ||
static create(name: string, requestPattern: string | RegExp): RequestCreateSubsystemFactory; | ||
} | ||
}, SubsystemServiceBus>, { | ||
readonly name: string; | ||
readonly requestPattern: string | RegExp; | ||
}, "System:CreateSubsystem">; | ||
interface SubsystemServiceBus extends Dispatcher { | ||
@@ -30,0 +26,0 @@ readonly name: string; |
@@ -7,2 +7,3 @@ "use strict"; | ||
const request_1 = require("./request"); | ||
const requestFactory_1 = require("./requestFactory"); | ||
class SystemServiceBusImpl { | ||
@@ -16,4 +17,4 @@ constructor() { | ||
bindDefaultHandlers() { | ||
this.serviceBus.addHandler((0, bus_1.createRequestHandler)(RequestCreateSubsystemFactory, (req) => { | ||
const { name, requestPattern } = req; | ||
this.serviceBus.addHandler((0, bus_1.createRequestHandler)(exports.RequestCreateSubsystemFactory, (req) => { | ||
const { name, requestPattern } = req.params; | ||
const sub = createSubsystemServiceBus(name, requestPattern); | ||
@@ -29,3 +30,3 @@ this._subsystems.push(sub); | ||
createSubsystem(name, requestPattern) { | ||
const res = this.dispatch(RequestCreateSubsystemFactory.create(name, requestPattern)); | ||
const res = this.dispatch(exports.RequestCreateSubsystemFactory.create({ name, requestPattern })); | ||
(0, assert_1.assert)(res?.value); | ||
@@ -35,3 +36,3 @@ return res.value; | ||
registerHandler(requestPrefix, handler) { | ||
const request = RequestRegisterHandlerFactory.create(requestPrefix, handler); | ||
const request = exports.RequestRegisterHandlerFactory.create({ requestPrefix, handler }); | ||
this.serviceBus.dispatch(request); | ||
@@ -51,33 +52,5 @@ } | ||
const TypeRequestRegisterHandler = 'System:RegisterHandler'; | ||
class RequestRegisterHandlerFactory extends request_1.ServiceRequest { | ||
constructor(requestPrefix, handler) { | ||
super(RequestRegisterHandlerFactory.type); | ||
this.requestPrefix = requestPrefix; | ||
this.handler = handler; | ||
} | ||
static is(req) { | ||
return req instanceof RequestRegisterHandlerFactory; | ||
} | ||
static create(requestPrefix, handler) { | ||
return new RequestRegisterHandlerFactory(requestPrefix, handler); | ||
} | ||
} | ||
exports.RequestRegisterHandlerFactory = RequestRegisterHandlerFactory; | ||
RequestRegisterHandlerFactory.type = TypeRequestRegisterHandler; | ||
exports.RequestRegisterHandlerFactory = (0, requestFactory_1.requestFactory)(TypeRequestRegisterHandler); | ||
const TypeRequestCreateSubsystem = 'System:CreateSubsystem'; | ||
class RequestCreateSubsystemFactory extends request_1.ServiceRequest { | ||
constructor(name, requestPattern) { | ||
super(RequestCreateSubsystemFactory.type); | ||
this.name = name; | ||
this.requestPattern = requestPattern; | ||
} | ||
static is(req) { | ||
return req instanceof RequestCreateSubsystemFactory; | ||
} | ||
static create(name, requestPattern) { | ||
return new RequestCreateSubsystemFactory(name, requestPattern); | ||
} | ||
} | ||
exports.RequestCreateSubsystemFactory = RequestCreateSubsystemFactory; | ||
RequestCreateSubsystemFactory.type = TypeRequestCreateSubsystem; | ||
exports.RequestCreateSubsystemFactory = (0, requestFactory_1.requestFactory)(TypeRequestCreateSubsystem); | ||
class SubsystemServiceBusImpl extends bus_1.ServiceBus { | ||
@@ -92,3 +65,3 @@ constructor(name, requestPattern) { | ||
: (reqType) => requestPattern.test(reqType); | ||
const handleRegistration = (0, bus_1.createRequestHandler)(RequestRegisterHandlerFactory, (req, next) => this.handleRegistrationReq(req, next), 'Subsystem Register Handlers for ' + name, `Matches against: <${requestPattern.toString()}>`); | ||
const handleRegistration = (0, bus_1.createRequestHandler)(exports.RequestRegisterHandlerFactory, (req, next) => this.handleRegistrationReq(req, next), 'Subsystem Register Handlers for ' + name, `Matches against: <${requestPattern.toString()}>`); | ||
this.addHandler(handleRegistration); | ||
@@ -103,3 +76,3 @@ this.handler = { | ||
// console.log(`${this.name}.handleRegistrationReq %o`, request); | ||
if (!this.canHandleType(request.requestPrefix)) { | ||
if (!this.canHandleType(request.params.requestPrefix)) { | ||
// console.log(`${this.name}.handleRegistrationReq skip`); | ||
@@ -109,3 +82,3 @@ return next(request); | ||
// console.log(`${this.name}.handleRegistrationReq add ***`); | ||
this.addHandler(request.handler); | ||
this.addHandler(request.params.handler); | ||
return (0, request_1.createResponse)(this); | ||
@@ -115,3 +88,3 @@ } | ||
return (next) => (req) => { | ||
if (!this.canHandleType(req.type) && !RequestRegisterHandlerFactory.is(req)) | ||
if (!this.canHandleType(req.type) && !exports.RequestRegisterHandlerFactory.is(req)) | ||
return next(req); | ||
@@ -118,0 +91,0 @@ const dispatch = this.reduceHandlers(this.handlers, req, dispatcher, next); |
@@ -6,3 +6,3 @@ { | ||
}, | ||
"version": "6.4.2", | ||
"version": "6.5.0", | ||
"description": "A Library for connecting requests to services that can fulfill them.", | ||
@@ -78,3 +78,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "1f7481fd7d6a561de92ba49870da6eb1441a9d20" | ||
"gitHead": "65c80b01e17bb0d74b57ef8b29309684a8588e27" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
22576
15
415