@cratis/arc 22.185.1 → 22.186.0
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/commands/Command.ts +13 -20
- package/dist/cjs/commands/Command.d.ts +1 -0
- package/dist/cjs/commands/Command.d.ts.map +1 -1
- package/dist/cjs/commands/Command.js +15 -16
- package/dist/cjs/commands/Command.js.map +1 -1
- package/dist/cjs/queries/ObservableQueryFor.d.ts +2 -0
- package/dist/cjs/queries/ObservableQueryFor.d.ts.map +1 -1
- package/dist/cjs/queries/ObservableQueryFor.js +34 -27
- package/dist/cjs/queries/ObservableQueryFor.js.map +1 -1
- package/dist/cjs/queries/QueryInstanceCache.d.ts +1 -0
- package/dist/cjs/queries/QueryInstanceCache.d.ts.map +1 -1
- package/dist/cjs/queries/QueryInstanceCache.js +11 -16
- package/dist/cjs/queries/QueryInstanceCache.js.map +1 -1
- package/dist/cjs/queries/ServerSentEventHubConnection.d.ts +7 -0
- package/dist/cjs/queries/ServerSentEventHubConnection.d.ts.map +1 -1
- package/dist/cjs/queries/ServerSentEventHubConnection.js +97 -57
- package/dist/cjs/queries/ServerSentEventHubConnection.js.map +1 -1
- package/dist/cjs/queries/WebSocketHubConnection.d.ts +6 -0
- package/dist/cjs/queries/WebSocketHubConnection.d.ts.map +1 -1
- package/dist/cjs/queries/WebSocketHubConnection.js +62 -43
- package/dist/cjs/queries/WebSocketHubConnection.js.map +1 -1
- package/dist/esm/commands/Command.d.ts +1 -0
- package/dist/esm/commands/Command.d.ts.map +1 -1
- package/dist/esm/commands/Command.js +15 -16
- package/dist/esm/commands/Command.js.map +1 -1
- package/dist/esm/queries/ObservableQueryFor.d.ts +2 -0
- package/dist/esm/queries/ObservableQueryFor.d.ts.map +1 -1
- package/dist/esm/queries/ObservableQueryFor.js +35 -28
- package/dist/esm/queries/ObservableQueryFor.js.map +1 -1
- package/dist/esm/queries/QueryInstanceCache.d.ts +1 -0
- package/dist/esm/queries/QueryInstanceCache.d.ts.map +1 -1
- package/dist/esm/queries/QueryInstanceCache.js +11 -16
- package/dist/esm/queries/QueryInstanceCache.js.map +1 -1
- package/dist/esm/queries/ServerSentEventHubConnection.d.ts +7 -0
- package/dist/esm/queries/ServerSentEventHubConnection.d.ts.map +1 -1
- package/dist/esm/queries/ServerSentEventHubConnection.js +97 -57
- package/dist/esm/queries/ServerSentEventHubConnection.js.map +1 -1
- package/dist/esm/queries/WebSocketHubConnection.d.ts +6 -0
- package/dist/esm/queries/WebSocketHubConnection.d.ts.map +1 -1
- package/dist/esm/queries/WebSocketHubConnection.js +62 -43
- package/dist/esm/queries/WebSocketHubConnection.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/queries/ObservableQueryFor.ts +43 -32
- package/queries/QueryInstanceCache.ts +12 -18
- package/queries/ServerSentEventHubConnection.ts +120 -113
- package/queries/WebSocketHubConnection.ts +72 -53
package/commands/Command.ts
CHANGED
|
@@ -96,16 +96,10 @@ export abstract class Command<TCommandContent = object, TCommandResponse = objec
|
|
|
96
96
|
return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
102
|
-
const payload = this.buildPayload();
|
|
103
|
-
const { route } = UrlHelpers.replaceRouteParameters(this.route, payload);
|
|
104
|
-
actualRoute = route;
|
|
105
|
-
}
|
|
99
|
+
const actualRoute = this.resolveRoute();
|
|
106
100
|
|
|
107
101
|
const submittedValues = this.captureCurrentValues();
|
|
108
|
-
const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call', allowedSeverity, ignoreWarnings);
|
|
102
|
+
const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call', { allowedSeverity, ignoreWarnings });
|
|
109
103
|
if (result.isSuccess) {
|
|
110
104
|
this._initialValues = submittedValues;
|
|
111
105
|
this.updateHasChanges();
|
|
@@ -127,15 +121,7 @@ export abstract class Command<TCommandContent = object, TCommandResponse = objec
|
|
|
127
121
|
return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;
|
|
128
122
|
}
|
|
129
123
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
133
|
-
const payload = this.buildPayload();
|
|
134
|
-
const { route } = UrlHelpers.replaceRouteParameters(this.route, payload);
|
|
135
|
-
actualRoute = route;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
actualRoute = `${actualRoute}/validate`;
|
|
124
|
+
const actualRoute = `${this.resolveRoute()}/validate`;
|
|
139
125
|
const result = await this.performRequest(actualRoute, 'Command validation endpoint not found at route', 'Error during validation call');
|
|
140
126
|
if (result.isSuccess && clientValidationErrors.length > 0) {
|
|
141
127
|
return Object.assign(result, { validationResults: [...result.validationResults, ...clientValidationErrors] });
|
|
@@ -170,6 +156,14 @@ export abstract class Command<TCommandContent = object, TCommandResponse = objec
|
|
|
170
156
|
}, Object, false) as CommandResult<TCommandResponse>;
|
|
171
157
|
}
|
|
172
158
|
|
|
159
|
+
private resolveRoute(): string {
|
|
160
|
+
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
161
|
+
const payload = this.buildPayload();
|
|
162
|
+
return UrlHelpers.replaceRouteParameters(this.route, payload).route;
|
|
163
|
+
}
|
|
164
|
+
return this.route;
|
|
165
|
+
}
|
|
166
|
+
|
|
173
167
|
private buildPayload(): object {
|
|
174
168
|
const payload = {};
|
|
175
169
|
this.propertyDescriptors.forEach(propertyDescriptor => {
|
|
@@ -240,11 +234,10 @@ export abstract class Command<TCommandContent = object, TCommandResponse = objec
|
|
|
240
234
|
route: string,
|
|
241
235
|
notFoundMessage: string,
|
|
242
236
|
errorMessage: string,
|
|
243
|
-
allowedSeverity?: ValidationResultSeverity
|
|
244
|
-
ignoreWarnings?: boolean
|
|
237
|
+
options: { allowedSeverity?: ValidationResultSeverity; ignoreWarnings?: boolean } = {}
|
|
245
238
|
): Promise<CommandResult<TCommandResponse>> {
|
|
246
239
|
const payload = this.buildPayload();
|
|
247
|
-
const headers = this.buildHeaders(allowedSeverity, ignoreWarnings);
|
|
240
|
+
const headers = this.buildHeaders(options.allowedSeverity, options.ignoreWarnings);
|
|
248
241
|
const actualRoute = joinPaths(this._apiBasePath, route);
|
|
249
242
|
const url = UrlHelpers.createUrlFrom(this._origin, this._apiBasePath, actualRoute);
|
|
250
243
|
|
|
@@ -31,6 +31,7 @@ export declare abstract class Command<TCommandContent = object, TCommandResponse
|
|
|
31
31
|
execute(allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): Promise<CommandResult<TCommandResponse>>;
|
|
32
32
|
validate(): Promise<CommandResult<TCommandResponse>>;
|
|
33
33
|
validateClientSide(): CommandResult<TCommandResponse>;
|
|
34
|
+
private resolveRoute;
|
|
34
35
|
private buildPayload;
|
|
35
36
|
private validateRequiredProperties;
|
|
36
37
|
private filterValidationResultsBySeverity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../commands/Command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAInE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAcrF,8BAAsB,OAAO,CAAC,eAAe,GAAG,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAE,YAAW,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IA6BzH,QAAQ,CAAC,aAAa,EAAE,WAAW;IAAW,QAAQ,CAAC,yBAAyB,EAAE,OAAO;IAzBrG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAuB;IAEnE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE5C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAE9B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,wBAAwB,CAAC;IAC9D,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC5D,QAAQ,KAAK,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAE3C,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAkB;IAOpC,YAAqB,aAAa,EAAE,WAAW,YAAS,EAAW,yBAAyB,EAAE,OAAO,EAKpG;IAGD,eAAe,CAAC,YAAY,EAAE,MAAM,QAEnC;IAGD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAExC;IAGD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IAGD,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAErD;IAGK,OAAO,CAAC,eAAe,CAAC,EAAE,wBAAwB,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../commands/Command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAInE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAcrF,8BAAsB,OAAO,CAAC,eAAe,GAAG,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAE,YAAW,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IA6BzH,QAAQ,CAAC,aAAa,EAAE,WAAW;IAAW,QAAQ,CAAC,yBAAyB,EAAE,OAAO;IAzBrG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAuB;IAEnE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE5C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAE9B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,wBAAwB,CAAC;IAC9D,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC5D,QAAQ,KAAK,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAE3C,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAkB;IAOpC,YAAqB,aAAa,EAAE,WAAW,YAAS,EAAW,yBAAyB,EAAE,OAAO,EAKpG;IAGD,eAAe,CAAC,YAAY,EAAE,MAAM,QAEnC;IAGD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAExC;IAGD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IAGD,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAErD;IAGK,OAAO,CAAC,eAAe,CAAC,EAAE,wBAAwB,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAsB5H;IAGK,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAmBzD;IAGD,kBAAkB,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAwBpD;IAED,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,iCAAiC;IAczC,OAAO,CAAC,YAAY;YAuBN,cAAc;IA8B5B,KAAK,IAAI,IAAI,CAOZ;IAGD,gBAAgB,CAAC,MAAM,EAAE,eAAe,QASvC;IAGD,iCAAiC,SAGhC;IAED,OAAO,CAAC,oBAAoB;IAY5B,aAAa,IAAI,IAAI,CAKpB;IAGD,IAAI,UAAU,YAEb;IAGD,eAAe,CAAC,QAAQ,EAAE,MAAM,QAY/B;IAGD,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,QAK3D;IAED,OAAO,CAAC,gBAAgB;CAM3B"}
|
|
@@ -68,14 +68,12 @@ var ValidationResultReasonDetail = require('../validation/ValidationResultReason
|
|
|
68
68
|
if (filteredRequiredErrors.length > 0) {
|
|
69
69
|
return CommandResult.CommandResult.validationFailed(filteredRequiredErrors);
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
73
|
-
const payload = this.buildPayload();
|
|
74
|
-
const { route } = UrlHelpers.UrlHelpers.replaceRouteParameters(this.route, payload);
|
|
75
|
-
actualRoute = route;
|
|
76
|
-
}
|
|
71
|
+
const actualRoute = this.resolveRoute();
|
|
77
72
|
const submittedValues = this.captureCurrentValues();
|
|
78
|
-
const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call',
|
|
73
|
+
const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call', {
|
|
74
|
+
allowedSeverity,
|
|
75
|
+
ignoreWarnings
|
|
76
|
+
});
|
|
79
77
|
if (result.isSuccess) {
|
|
80
78
|
this._initialValues = submittedValues;
|
|
81
79
|
this.updateHasChanges();
|
|
@@ -93,13 +91,7 @@ var ValidationResultReasonDetail = require('../validation/ValidationResultReason
|
|
|
93
91
|
if (filteredRequiredErrors.length > 0) {
|
|
94
92
|
return CommandResult.CommandResult.validationFailed(filteredRequiredErrors);
|
|
95
93
|
}
|
|
96
|
-
|
|
97
|
-
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
98
|
-
const payload = this.buildPayload();
|
|
99
|
-
const { route } = UrlHelpers.UrlHelpers.replaceRouteParameters(this.route, payload);
|
|
100
|
-
actualRoute = route;
|
|
101
|
-
}
|
|
102
|
-
actualRoute = `${actualRoute}/validate`;
|
|
94
|
+
const actualRoute = `${this.resolveRoute()}/validate`;
|
|
103
95
|
const result = await this.performRequest(actualRoute, 'Command validation endpoint not found at route', 'Error during validation call');
|
|
104
96
|
if (result.isSuccess && clientValidationErrors.length > 0) {
|
|
105
97
|
return Object.assign(result, {
|
|
@@ -136,6 +128,13 @@ var ValidationResultReasonDetail = require('../validation/ValidationResultReason
|
|
|
136
128
|
response: null
|
|
137
129
|
}, Object, false);
|
|
138
130
|
}
|
|
131
|
+
resolveRoute() {
|
|
132
|
+
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
133
|
+
const payload = this.buildPayload();
|
|
134
|
+
return UrlHelpers.UrlHelpers.replaceRouteParameters(this.route, payload).route;
|
|
135
|
+
}
|
|
136
|
+
return this.route;
|
|
137
|
+
}
|
|
139
138
|
buildPayload() {
|
|
140
139
|
const payload = {};
|
|
141
140
|
this.propertyDescriptors.forEach((propertyDescriptor)=>{
|
|
@@ -189,9 +188,9 @@ var ValidationResultReasonDetail = require('../validation/ValidationResultReason
|
|
|
189
188
|
}
|
|
190
189
|
return headers;
|
|
191
190
|
}
|
|
192
|
-
async performRequest(route, notFoundMessage, errorMessage,
|
|
191
|
+
async performRequest(route, notFoundMessage, errorMessage, options = {}) {
|
|
193
192
|
const payload = this.buildPayload();
|
|
194
|
-
const headers = this.buildHeaders(allowedSeverity, ignoreWarnings);
|
|
193
|
+
const headers = this.buildHeaders(options.allowedSeverity, options.ignoreWarnings);
|
|
195
194
|
const actualRoute = joinPaths.joinPaths(this._apiBasePath, route);
|
|
196
195
|
const url = UrlHelpers.UrlHelpers.createUrlFrom(this._origin, this._apiBasePath, actualRoute);
|
|
197
196
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.js","sources":["../../../commands/Command.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ICommand, PropertyChanged } from './ICommand.js';\nimport { CommandResult } from \"./CommandResult.js\";\nimport { CommandValidator } from './CommandValidator.js';\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { Globals } from '../Globals.js';\nimport { joinPaths } from '../joinPaths.js';\nimport { UrlHelpers } from '../UrlHelpers.js';\nimport { GetHttpHeaders } from '../GetHttpHeaders.js';\nimport { PropertyDescriptor } from '../reflection/PropertyDescriptor.js';\nimport { SliceLocation } from '../reflection/SliceLocation.js';\nimport { ValidationResult } from '../validation/ValidationResult.js';\nimport { ValidationResultSeverity } from '../validation/ValidationResultSeverity.js';\nimport { ValidationResultReason } from '../validation/ValidationResultReason.js';\nimport { ValidationResultReasonDetail } from '../validation/ValidationResultReasonDetail.js';\n\ntype Callback = {\n callback: WeakRef<PropertyChanged>;\n thisArg: WeakRef<object>;\n}\n\n/**\n * Represents an implementation of {@link ICommand} that works with HTTP fetch.\n * Missing required properties produce a {@link ValidationResultReason.Rule} result with\n * {@link ValidationResultReasonDetail.Required}, without contacting the server.\n */\nexport abstract class Command<TCommandContent = object, TCommandResponse = object> implements ICommand<TCommandContent, TCommandResponse> {\n /**\n * Gets the {@link SliceLocation} of the command. Generated proxies override it with the location resolved from the backend namespace.\n */\n static readonly sliceLocation: SliceLocation = SliceLocation.empty;\n\n private _microservice: string;\n private _apiBasePath: string;\n private _origin: string;\n private _httpHeadersCallback: GetHttpHeaders;\n abstract readonly route: string;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n readonly validation?: CommandValidator<any>;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n readonly roles: string[] = [];\n /** Inclusive minimum blocking severity declared by a model-bound command proxy. */\n readonly blockOnValidationSeverity?: ValidationResultSeverity;\n abstract readonly propertyDescriptors: PropertyDescriptor[];\n abstract get requestParameters(): string[];\n\n private _initialValues: object = {};\n private _hasChanges = false;\n private _callbacks: Callback[] = [];\n\n /**\n * Initializes a new instance of the {@link Command<,>} class.\n * @param _responseType Type of response.\n * @param _isResponseTypeEnumerable Whether or not the response type is enumerable.\n */\n constructor(readonly _responseType: Constructor = Object, readonly _isResponseTypeEnumerable: boolean) {\n this._microservice = Globals.microservice ?? '';\n this._apiBasePath = Globals.apiBasePath ?? '';\n this._origin = Globals.origin ?? '';\n this._httpHeadersCallback = () => ({});\n }\n\n /** @inheritdoc */\n setMicroservice(microservice: string) {\n this._microservice = microservice;\n }\n\n /** @inheritdoc */\n setApiBasePath(apiBasePath: string): void {\n this._apiBasePath = apiBasePath;\n }\n\n /** @inheritdoc */\n setOrigin(origin: string): void {\n this._origin = origin;\n }\n\n /** @inheritdoc */\n setHttpHeadersCallback(callback: GetHttpHeaders): void {\n this._httpHeadersCallback = callback;\n }\n\n /** @inheritdoc */\n async execute(allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): Promise<CommandResult<TCommandResponse>> {\n const clientValidationErrors = this.validation?.validate(this) || [];\n const filteredClientErrors = this.filterValidationResultsBySeverity(clientValidationErrors, allowedSeverity, ignoreWarnings);\n if (filteredClientErrors.length > 0) {\n return CommandResult.validationFailed(filteredClientErrors) as CommandResult<TCommandResponse>;\n }\n\n const validationErrors = this.validateRequiredProperties();\n const filteredRequiredErrors = this.filterValidationResultsBySeverity(validationErrors, allowedSeverity, ignoreWarnings);\n if (filteredRequiredErrors.length > 0) {\n return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;\n }\n\n let actualRoute = this.route;\n\n if (this.requestParameters && this.requestParameters.length > 0) {\n const payload = this.buildPayload();\n const { route } = UrlHelpers.replaceRouteParameters(this.route, payload);\n actualRoute = route;\n }\n\n const submittedValues = this.captureCurrentValues();\n const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call', allowedSeverity, ignoreWarnings);\n if (result.isSuccess) {\n this._initialValues = submittedValues;\n this.updateHasChanges();\n }\n return result;\n }\n\n /** @inheritdoc */\n async validate(): Promise<CommandResult<TCommandResponse>> {\n const clientValidationErrors = this.validation?.validate(this) || [];\n const filteredClientErrors = this.filterValidationResultsBySeverity(clientValidationErrors);\n if (filteredClientErrors.length > 0) {\n return CommandResult.validationFailed(filteredClientErrors) as CommandResult<TCommandResponse>;\n }\n\n const validationErrors = this.validateRequiredProperties();\n const filteredRequiredErrors = this.filterValidationResultsBySeverity(validationErrors);\n if (filteredRequiredErrors.length > 0) {\n return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;\n }\n\n let actualRoute = this.route;\n\n if (this.requestParameters && this.requestParameters.length > 0) {\n const payload = this.buildPayload();\n const { route } = UrlHelpers.replaceRouteParameters(this.route, payload);\n actualRoute = route;\n }\n\n actualRoute = `${actualRoute}/validate`;\n const result = await this.performRequest(actualRoute, 'Command validation endpoint not found at route', 'Error during validation call');\n if (result.isSuccess && clientValidationErrors.length > 0) {\n return Object.assign(result, { validationResults: [...result.validationResults, ...clientValidationErrors] });\n }\n return result;\n }\n\n /** @inheritdoc */\n validateClientSide(): CommandResult<TCommandResponse> {\n const clientValidationErrors = this.validation?.validate(this) || [];\n const filteredClientErrors = this.filterValidationResultsBySeverity(clientValidationErrors);\n if (filteredClientErrors.length > 0) {\n return CommandResult.validationFailed(filteredClientErrors) as CommandResult<TCommandResponse>;\n }\n\n const validationErrors = this.validateRequiredProperties();\n const filteredRequiredErrors = this.filterValidationResultsBySeverity(validationErrors);\n if (filteredRequiredErrors.length > 0) {\n return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;\n }\n\n const advisoryResults = [...clientValidationErrors, ...validationErrors];\n if (advisoryResults.length === 0) {\n return CommandResult.empty as CommandResult<TCommandResponse>;\n }\n\n return new CommandResult({\n ...CommandResult.empty,\n correlationId: CommandResult.empty.correlationId.toString(),\n validationResults: advisoryResults,\n response: null\n }, Object, false) as CommandResult<TCommandResponse>;\n }\n\n private buildPayload(): object {\n const payload = {};\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n payload[property] = this[property];\n });\n return payload;\n }\n\n private validateRequiredProperties(): ValidationResult[] {\n const validationErrors: ValidationResult[] = [];\n this.propertyDescriptors.forEach(propertyDescriptor => {\n if (!propertyDescriptor.isOptional && !this.requestParameters.includes(propertyDescriptor.name)) {\n const value = this[propertyDescriptor.name];\n if (value === undefined || value === null) {\n validationErrors.push(new ValidationResult(\n ValidationResultSeverity.Error,\n `${propertyDescriptor.name} is required`,\n [propertyDescriptor.name],\n null,\n ValidationResultReason.Rule,\n ValidationResultReasonDetail.Required\n ));\n }\n }\n });\n return validationErrors;\n }\n\n private filterValidationResultsBySeverity(validationResults: ValidationResult[], allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): ValidationResult[] {\n if (this.blockOnValidationSeverity !== undefined) {\n const effectiveAllowed = Math.min(allowedSeverity ?? ValidationResultSeverity.Error, this.blockOnValidationSeverity - 1);\n return validationResults.filter(result => result.severity === ValidationResultSeverity.Unknown || result.severity > effectiveAllowed);\n }\n if (ignoreWarnings === true) {\n return validationResults.filter(result => result.severity === ValidationResultSeverity.Error);\n }\n if (allowedSeverity === undefined) {\n return validationResults.filter(result => result.severity === ValidationResultSeverity.Error);\n }\n return validationResults.filter(result => result.severity > allowedSeverity);\n }\n\n private buildHeaders(allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): HeadersInit {\n const customHeaders = this._httpHeadersCallback?.() ?? {};\n const headers = {\n ...customHeaders,\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (this._microservice?.length > 0) {\n headers[Globals.microserviceHttpHeader] = this._microservice;\n }\n\n if (allowedSeverity !== undefined) {\n headers['X-Allowed-Severity'] = allowedSeverity.toString();\n }\n\n if (ignoreWarnings === true) {\n headers['X-Ignore-Warnings'] = 'true';\n }\n\n return headers;\n }\n\n private async performRequest(\n route: string,\n notFoundMessage: string,\n errorMessage: string,\n allowedSeverity?: ValidationResultSeverity,\n ignoreWarnings?: boolean\n ): Promise<CommandResult<TCommandResponse>> {\n const payload = this.buildPayload();\n const headers = this.buildHeaders(allowedSeverity, ignoreWarnings);\n const actualRoute = joinPaths(this._apiBasePath, route);\n const url = UrlHelpers.createUrlFrom(this._origin, this._apiBasePath, actualRoute);\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JsonSerializer.serialize(payload)\n });\n\n if (response.status === 404) {\n return CommandResult.failed([`${notFoundMessage} '${actualRoute}'`]) as CommandResult<TCommandResponse>;\n }\n\n const result = await response.json();\n return new CommandResult(result, this._responseType, this._isResponseTypeEnumerable);\n } catch (ex) {\n return CommandResult.failed([`${errorMessage}: ${ex}`]) as CommandResult<TCommandResponse>;\n }\n }\n\n /** @inheritdoc */\n clear(): void {\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n this[property] = undefined;\n });\n this._initialValues = {};\n this._hasChanges = false;\n }\n\n /** @inheritdoc */\n setInitialValues(values: TCommandContent) {\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n if (Object.prototype.hasOwnProperty.call(values, property)) {\n this._initialValues[property] = values[property];\n this[property] = values[property];\n }\n });\n this.updateHasChanges();\n }\n\n /** @inheritdoc */\n setInitialValuesFromCurrentValues() {\n this._initialValues = this.captureCurrentValues();\n this.updateHasChanges();\n }\n\n private captureCurrentValues(): object {\n const values = {};\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n if (property in this) {\n values[property] = this[property];\n }\n });\n return values;\n }\n\n /** @inheritdoc */\n revertChanges(): void {\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n this[property] = this._initialValues[property];\n });\n }\n\n /** @inheritdoc */\n get hasChanges() {\n return this._hasChanges;\n }\n\n /** @inheritdoc */\n propertyChanged(property: string) {\n this.updateHasChanges();\n\n this._callbacks.forEach(callbackContainer => {\n const callback = callbackContainer.callback.deref();\n const thisArg = callbackContainer.thisArg.deref();\n if (callback && thisArg) {\n callback.call(thisArg, property);\n } else {\n this._callbacks = this._callbacks.filter(_ => _.callback !== callbackContainer.callback);\n }\n });\n }\n\n /** @inheritdoc */\n onPropertyChanged(callback: PropertyChanged, thisArg: object) {\n this._callbacks.push({\n callback: new WeakRef(callback),\n thisArg: new WeakRef(thisArg)\n });\n }\n\n private updateHasChanges() {\n this._hasChanges = this.propertyDescriptors.some(propertyDescriptor => {\n const property = propertyDescriptor.name;\n return this[property] !== this._initialValues[property];\n });\n }\n}\n"],"names":["Command","sliceLocation","SliceLocation","empty","_microservice","_apiBasePath","_origin","_httpHeadersCallback","validation","roles","blockOnValidationSeverity","_initialValues","_hasChanges","_callbacks","_responseType","Object","_isResponseTypeEnumerable","Globals","microservice","apiBasePath","origin","setMicroservice","setApiBasePath","setOrigin","setHttpHeadersCallback","callback","execute","allowedSeverity","ignoreWarnings","clientValidationErrors","validate","filteredClientErrors","filterValidationResultsBySeverity","length","CommandResult","validationFailed","validationErrors","validateRequiredProperties","filteredRequiredErrors","actualRoute","route","requestParameters","payload","buildPayload","UrlHelpers","replaceRouteParameters","submittedValues","captureCurrentValues","result","performRequest","isSuccess","updateHasChanges","assign","validationResults","validateClientSide","advisoryResults","correlationId","toString","response","propertyDescriptors","forEach","propertyDescriptor","property","name","isOptional","includes","value","undefined","push","ValidationResult","ValidationResultSeverity","Error","ValidationResultReason","Rule","ValidationResultReasonDetail","Required","effectiveAllowed","Math","min","filter","severity","Unknown","buildHeaders","customHeaders","headers","microserviceHttpHeader","notFoundMessage","errorMessage","joinPaths","url","createUrlFrom","fetch","method","body","JsonSerializer","serialize","status","failed","json","ex","clear","setInitialValues","values","prototype","hasOwnProperty","call","setInitialValuesFromCurrentValues","revertChanges","hasChanges","propertyChanged","callbackContainer","deref","thisArg","_","onPropertyChanged","WeakRef","some"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Command.js","sources":["../../../commands/Command.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ICommand, PropertyChanged } from './ICommand.js';\nimport { CommandResult } from \"./CommandResult.js\";\nimport { CommandValidator } from './CommandValidator.js';\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { Globals } from '../Globals.js';\nimport { joinPaths } from '../joinPaths.js';\nimport { UrlHelpers } from '../UrlHelpers.js';\nimport { GetHttpHeaders } from '../GetHttpHeaders.js';\nimport { PropertyDescriptor } from '../reflection/PropertyDescriptor.js';\nimport { SliceLocation } from '../reflection/SliceLocation.js';\nimport { ValidationResult } from '../validation/ValidationResult.js';\nimport { ValidationResultSeverity } from '../validation/ValidationResultSeverity.js';\nimport { ValidationResultReason } from '../validation/ValidationResultReason.js';\nimport { ValidationResultReasonDetail } from '../validation/ValidationResultReasonDetail.js';\n\ntype Callback = {\n callback: WeakRef<PropertyChanged>;\n thisArg: WeakRef<object>;\n}\n\n/**\n * Represents an implementation of {@link ICommand} that works with HTTP fetch.\n * Missing required properties produce a {@link ValidationResultReason.Rule} result with\n * {@link ValidationResultReasonDetail.Required}, without contacting the server.\n */\nexport abstract class Command<TCommandContent = object, TCommandResponse = object> implements ICommand<TCommandContent, TCommandResponse> {\n /**\n * Gets the {@link SliceLocation} of the command. Generated proxies override it with the location resolved from the backend namespace.\n */\n static readonly sliceLocation: SliceLocation = SliceLocation.empty;\n\n private _microservice: string;\n private _apiBasePath: string;\n private _origin: string;\n private _httpHeadersCallback: GetHttpHeaders;\n abstract readonly route: string;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n readonly validation?: CommandValidator<any>;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n readonly roles: string[] = [];\n /** Inclusive minimum blocking severity declared by a model-bound command proxy. */\n readonly blockOnValidationSeverity?: ValidationResultSeverity;\n abstract readonly propertyDescriptors: PropertyDescriptor[];\n abstract get requestParameters(): string[];\n\n private _initialValues: object = {};\n private _hasChanges = false;\n private _callbacks: Callback[] = [];\n\n /**\n * Initializes a new instance of the {@link Command<,>} class.\n * @param _responseType Type of response.\n * @param _isResponseTypeEnumerable Whether or not the response type is enumerable.\n */\n constructor(readonly _responseType: Constructor = Object, readonly _isResponseTypeEnumerable: boolean) {\n this._microservice = Globals.microservice ?? '';\n this._apiBasePath = Globals.apiBasePath ?? '';\n this._origin = Globals.origin ?? '';\n this._httpHeadersCallback = () => ({});\n }\n\n /** @inheritdoc */\n setMicroservice(microservice: string) {\n this._microservice = microservice;\n }\n\n /** @inheritdoc */\n setApiBasePath(apiBasePath: string): void {\n this._apiBasePath = apiBasePath;\n }\n\n /** @inheritdoc */\n setOrigin(origin: string): void {\n this._origin = origin;\n }\n\n /** @inheritdoc */\n setHttpHeadersCallback(callback: GetHttpHeaders): void {\n this._httpHeadersCallback = callback;\n }\n\n /** @inheritdoc */\n async execute(allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): Promise<CommandResult<TCommandResponse>> {\n const clientValidationErrors = this.validation?.validate(this) || [];\n const filteredClientErrors = this.filterValidationResultsBySeverity(clientValidationErrors, allowedSeverity, ignoreWarnings);\n if (filteredClientErrors.length > 0) {\n return CommandResult.validationFailed(filteredClientErrors) as CommandResult<TCommandResponse>;\n }\n\n const validationErrors = this.validateRequiredProperties();\n const filteredRequiredErrors = this.filterValidationResultsBySeverity(validationErrors, allowedSeverity, ignoreWarnings);\n if (filteredRequiredErrors.length > 0) {\n return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;\n }\n\n const actualRoute = this.resolveRoute();\n\n const submittedValues = this.captureCurrentValues();\n const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call', { allowedSeverity, ignoreWarnings });\n if (result.isSuccess) {\n this._initialValues = submittedValues;\n this.updateHasChanges();\n }\n return result;\n }\n\n /** @inheritdoc */\n async validate(): Promise<CommandResult<TCommandResponse>> {\n const clientValidationErrors = this.validation?.validate(this) || [];\n const filteredClientErrors = this.filterValidationResultsBySeverity(clientValidationErrors);\n if (filteredClientErrors.length > 0) {\n return CommandResult.validationFailed(filteredClientErrors) as CommandResult<TCommandResponse>;\n }\n\n const validationErrors = this.validateRequiredProperties();\n const filteredRequiredErrors = this.filterValidationResultsBySeverity(validationErrors);\n if (filteredRequiredErrors.length > 0) {\n return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;\n }\n\n const actualRoute = `${this.resolveRoute()}/validate`;\n const result = await this.performRequest(actualRoute, 'Command validation endpoint not found at route', 'Error during validation call');\n if (result.isSuccess && clientValidationErrors.length > 0) {\n return Object.assign(result, { validationResults: [...result.validationResults, ...clientValidationErrors] });\n }\n return result;\n }\n\n /** @inheritdoc */\n validateClientSide(): CommandResult<TCommandResponse> {\n const clientValidationErrors = this.validation?.validate(this) || [];\n const filteredClientErrors = this.filterValidationResultsBySeverity(clientValidationErrors);\n if (filteredClientErrors.length > 0) {\n return CommandResult.validationFailed(filteredClientErrors) as CommandResult<TCommandResponse>;\n }\n\n const validationErrors = this.validateRequiredProperties();\n const filteredRequiredErrors = this.filterValidationResultsBySeverity(validationErrors);\n if (filteredRequiredErrors.length > 0) {\n return CommandResult.validationFailed(filteredRequiredErrors) as CommandResult<TCommandResponse>;\n }\n\n const advisoryResults = [...clientValidationErrors, ...validationErrors];\n if (advisoryResults.length === 0) {\n return CommandResult.empty as CommandResult<TCommandResponse>;\n }\n\n return new CommandResult({\n ...CommandResult.empty,\n correlationId: CommandResult.empty.correlationId.toString(),\n validationResults: advisoryResults,\n response: null\n }, Object, false) as CommandResult<TCommandResponse>;\n }\n\n private resolveRoute(): string {\n if (this.requestParameters && this.requestParameters.length > 0) {\n const payload = this.buildPayload();\n return UrlHelpers.replaceRouteParameters(this.route, payload).route;\n }\n return this.route;\n }\n\n private buildPayload(): object {\n const payload = {};\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n payload[property] = this[property];\n });\n return payload;\n }\n\n private validateRequiredProperties(): ValidationResult[] {\n const validationErrors: ValidationResult[] = [];\n this.propertyDescriptors.forEach(propertyDescriptor => {\n if (!propertyDescriptor.isOptional && !this.requestParameters.includes(propertyDescriptor.name)) {\n const value = this[propertyDescriptor.name];\n if (value === undefined || value === null) {\n validationErrors.push(new ValidationResult(\n ValidationResultSeverity.Error,\n `${propertyDescriptor.name} is required`,\n [propertyDescriptor.name],\n null,\n ValidationResultReason.Rule,\n ValidationResultReasonDetail.Required\n ));\n }\n }\n });\n return validationErrors;\n }\n\n private filterValidationResultsBySeverity(validationResults: ValidationResult[], allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): ValidationResult[] {\n if (this.blockOnValidationSeverity !== undefined) {\n const effectiveAllowed = Math.min(allowedSeverity ?? ValidationResultSeverity.Error, this.blockOnValidationSeverity - 1);\n return validationResults.filter(result => result.severity === ValidationResultSeverity.Unknown || result.severity > effectiveAllowed);\n }\n if (ignoreWarnings === true) {\n return validationResults.filter(result => result.severity === ValidationResultSeverity.Error);\n }\n if (allowedSeverity === undefined) {\n return validationResults.filter(result => result.severity === ValidationResultSeverity.Error);\n }\n return validationResults.filter(result => result.severity > allowedSeverity);\n }\n\n private buildHeaders(allowedSeverity?: ValidationResultSeverity, ignoreWarnings?: boolean): HeadersInit {\n const customHeaders = this._httpHeadersCallback?.() ?? {};\n const headers = {\n ...customHeaders,\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (this._microservice?.length > 0) {\n headers[Globals.microserviceHttpHeader] = this._microservice;\n }\n\n if (allowedSeverity !== undefined) {\n headers['X-Allowed-Severity'] = allowedSeverity.toString();\n }\n\n if (ignoreWarnings === true) {\n headers['X-Ignore-Warnings'] = 'true';\n }\n\n return headers;\n }\n\n private async performRequest(\n route: string,\n notFoundMessage: string,\n errorMessage: string,\n options: { allowedSeverity?: ValidationResultSeverity; ignoreWarnings?: boolean } = {}\n ): Promise<CommandResult<TCommandResponse>> {\n const payload = this.buildPayload();\n const headers = this.buildHeaders(options.allowedSeverity, options.ignoreWarnings);\n const actualRoute = joinPaths(this._apiBasePath, route);\n const url = UrlHelpers.createUrlFrom(this._origin, this._apiBasePath, actualRoute);\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JsonSerializer.serialize(payload)\n });\n\n if (response.status === 404) {\n return CommandResult.failed([`${notFoundMessage} '${actualRoute}'`]) as CommandResult<TCommandResponse>;\n }\n\n const result = await response.json();\n return new CommandResult(result, this._responseType, this._isResponseTypeEnumerable);\n } catch (ex) {\n return CommandResult.failed([`${errorMessage}: ${ex}`]) as CommandResult<TCommandResponse>;\n }\n }\n\n /** @inheritdoc */\n clear(): void {\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n this[property] = undefined;\n });\n this._initialValues = {};\n this._hasChanges = false;\n }\n\n /** @inheritdoc */\n setInitialValues(values: TCommandContent) {\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n if (Object.prototype.hasOwnProperty.call(values, property)) {\n this._initialValues[property] = values[property];\n this[property] = values[property];\n }\n });\n this.updateHasChanges();\n }\n\n /** @inheritdoc */\n setInitialValuesFromCurrentValues() {\n this._initialValues = this.captureCurrentValues();\n this.updateHasChanges();\n }\n\n private captureCurrentValues(): object {\n const values = {};\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n if (property in this) {\n values[property] = this[property];\n }\n });\n return values;\n }\n\n /** @inheritdoc */\n revertChanges(): void {\n this.propertyDescriptors.forEach(propertyDescriptor => {\n const property = propertyDescriptor.name;\n this[property] = this._initialValues[property];\n });\n }\n\n /** @inheritdoc */\n get hasChanges() {\n return this._hasChanges;\n }\n\n /** @inheritdoc */\n propertyChanged(property: string) {\n this.updateHasChanges();\n\n this._callbacks.forEach(callbackContainer => {\n const callback = callbackContainer.callback.deref();\n const thisArg = callbackContainer.thisArg.deref();\n if (callback && thisArg) {\n callback.call(thisArg, property);\n } else {\n this._callbacks = this._callbacks.filter(_ => _.callback !== callbackContainer.callback);\n }\n });\n }\n\n /** @inheritdoc */\n onPropertyChanged(callback: PropertyChanged, thisArg: object) {\n this._callbacks.push({\n callback: new WeakRef(callback),\n thisArg: new WeakRef(thisArg)\n });\n }\n\n private updateHasChanges() {\n this._hasChanges = this.propertyDescriptors.some(propertyDescriptor => {\n const property = propertyDescriptor.name;\n return this[property] !== this._initialValues[property];\n });\n }\n}\n"],"names":["Command","sliceLocation","SliceLocation","empty","_microservice","_apiBasePath","_origin","_httpHeadersCallback","validation","roles","blockOnValidationSeverity","_initialValues","_hasChanges","_callbacks","_responseType","Object","_isResponseTypeEnumerable","Globals","microservice","apiBasePath","origin","setMicroservice","setApiBasePath","setOrigin","setHttpHeadersCallback","callback","execute","allowedSeverity","ignoreWarnings","clientValidationErrors","validate","filteredClientErrors","filterValidationResultsBySeverity","length","CommandResult","validationFailed","validationErrors","validateRequiredProperties","filteredRequiredErrors","actualRoute","resolveRoute","submittedValues","captureCurrentValues","result","performRequest","isSuccess","updateHasChanges","assign","validationResults","validateClientSide","advisoryResults","correlationId","toString","response","requestParameters","payload","buildPayload","UrlHelpers","replaceRouteParameters","route","propertyDescriptors","forEach","propertyDescriptor","property","name","isOptional","includes","value","undefined","push","ValidationResult","ValidationResultSeverity","Error","ValidationResultReason","Rule","ValidationResultReasonDetail","Required","effectiveAllowed","Math","min","filter","severity","Unknown","buildHeaders","customHeaders","headers","microserviceHttpHeader","notFoundMessage","errorMessage","options","joinPaths","url","createUrlFrom","fetch","method","body","JsonSerializer","serialize","status","failed","json","ex","clear","setInitialValues","values","prototype","hasOwnProperty","call","setInitialValuesFromCurrentValues","revertChanges","hasChanges","propertyChanged","callbackContainer","deref","thisArg","_","onPropertyChanged","WeakRef","some"],"mappings":"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"}
|
|
@@ -39,6 +39,8 @@ export declare abstract class ObservableQueryFor<TDataType, TParameters = object
|
|
|
39
39
|
setPollingOptions(options: Partial<PollingOptions>): void;
|
|
40
40
|
setHttpMethod(method: QueryHttpMethod): void;
|
|
41
41
|
subscribe(callback: OnNextResult<QueryResult<TDataType>>, args?: TParameters): ObservableQuerySubscription<TDataType>;
|
|
42
|
+
private createConnection;
|
|
43
|
+
private buildRequestHeaders;
|
|
42
44
|
perform(args?: TParameters): Promise<QueryResult<TDataType>>;
|
|
43
45
|
private validateArguments;
|
|
44
46
|
private buildQueryArguments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservableQueryFor.d.ts","sourceRoot":"","sources":["../../../queries/ObservableQueryFor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAS5D,8BAAsB,kBAAkB,CACpC,SAAS,EACT,WAAW,GAAG,MAAM,CACtB,YAAW,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC;IA+BhD,QAAQ,CAAC,SAAS,EAAE,WAAW;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO;IA5BhC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAuB;IAEnE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAC,CAAwC;IAC5D,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,eAAe,CAAC,CAA0B;IAElD,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAE1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC9D,QAAQ,KAAK,yBAAyB,IAAI,MAAM,EAAE,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAOf,YACa,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,OAAO,EAQ/B;IAKD,OAAO,SAEN;IAGD,eAAe,CAAC,YAAY,EAAE,MAAM,QAEnC;IAGD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAExC;IAGD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IAGD,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAErD;IAMD,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAExD;IAGD,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAE3C;IAGD,SAAS,CACL,QAAQ,EAAE,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAC9C,IAAI,CAAC,EAAE,WAAW,GACnB,2BAA2B,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"ObservableQueryFor.d.ts","sourceRoot":"","sources":["../../../queries/ObservableQueryFor.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,25 +82,7 @@ var QueryHttpRequest = require('./QueryHttpRequest.js');
|
|
|
82
82
|
if (this._connection) {
|
|
83
83
|
this._connection.disconnect();
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
if (clientValidationErrors.length > 0) {
|
|
87
|
-
// Serve the failure through the connection rather than throwing, so a subscriber sees an invalid result
|
|
88
|
-
// on its normal callback path instead of the empty result an unestablished connection would emit.
|
|
89
|
-
this._connection = new NullObservableQueryConnection.NullObservableQueryConnection(this.defaultValue, QueryResult.QueryResult.validationFailed(clientValidationErrors, this));
|
|
90
|
-
} else if (this.validateArguments(args)) {
|
|
91
|
-
this._connection = ObservableQueryConnectionFactory.createObservableQueryConnection({
|
|
92
|
-
route: this.route,
|
|
93
|
-
queryName: this.queryName ?? this.constructor.name,
|
|
94
|
-
origin: this._origin,
|
|
95
|
-
apiBasePath: this._apiBasePath,
|
|
96
|
-
microservice: this._microservice,
|
|
97
|
-
args: args,
|
|
98
|
-
httpHeadersCallback: this._httpHeadersCallback,
|
|
99
|
-
pollingOptions: this._pollingOptions
|
|
100
|
-
});
|
|
101
|
-
} else {
|
|
102
|
-
this._connection = new NullObservableQueryConnection.NullObservableQueryConnection(this.defaultValue);
|
|
103
|
-
}
|
|
85
|
+
this._connection = this.createConnection(args);
|
|
104
86
|
// Descriptor-backed instance properties provide defaults; fresh args passed to subscribe()
|
|
105
87
|
// must take precedence over any stale instance property values. Spread parameterValues
|
|
106
88
|
// first so that the caller-supplied args can override them.
|
|
@@ -133,6 +115,38 @@ var QueryHttpRequest = require('./QueryHttpRequest.js');
|
|
|
133
115
|
}, connectionQueryArguments);
|
|
134
116
|
return subscriber;
|
|
135
117
|
}
|
|
118
|
+
createConnection(args) {
|
|
119
|
+
const clientValidationErrors = this.validation?.validate(args || {}) || [];
|
|
120
|
+
if (clientValidationErrors.length > 0) {
|
|
121
|
+
// Serve the failure through the connection rather than throwing, so a subscriber sees an invalid result
|
|
122
|
+
// on its normal callback path instead of the empty result an unestablished connection would emit.
|
|
123
|
+
return new NullObservableQueryConnection.NullObservableQueryConnection(this.defaultValue, QueryResult.QueryResult.validationFailed(clientValidationErrors, this));
|
|
124
|
+
}
|
|
125
|
+
if (!this.validateArguments(args)) {
|
|
126
|
+
return new NullObservableQueryConnection.NullObservableQueryConnection(this.defaultValue);
|
|
127
|
+
}
|
|
128
|
+
return ObservableQueryConnectionFactory.createObservableQueryConnection({
|
|
129
|
+
route: this.route,
|
|
130
|
+
queryName: this.queryName ?? this.constructor.name,
|
|
131
|
+
origin: this._origin,
|
|
132
|
+
apiBasePath: this._apiBasePath,
|
|
133
|
+
microservice: this._microservice,
|
|
134
|
+
args: args,
|
|
135
|
+
httpHeadersCallback: this._httpHeadersCallback,
|
|
136
|
+
pollingOptions: this._pollingOptions
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
buildRequestHeaders() {
|
|
140
|
+
const headers = {
|
|
141
|
+
...this._httpHeadersCallback?.() || {},
|
|
142
|
+
Accept: 'application/json',
|
|
143
|
+
'Content-Type': 'application/json'
|
|
144
|
+
};
|
|
145
|
+
if (this._microservice?.length > 0) {
|
|
146
|
+
headers[Globals.Globals.microserviceHttpHeader] = this._microservice;
|
|
147
|
+
}
|
|
148
|
+
return headers;
|
|
149
|
+
}
|
|
136
150
|
/** @inheritdoc */ async perform(args) {
|
|
137
151
|
const noSuccess = {
|
|
138
152
|
...QueryResult.QueryResult.noSuccess,
|
|
@@ -151,14 +165,7 @@ var QueryHttpRequest = require('./QueryHttpRequest.js');
|
|
|
151
165
|
}
|
|
152
166
|
// Collect parameter values from parameterDescriptors that are set
|
|
153
167
|
const parameterValues = ParametersHelper.ParametersHelper.collectParameterValues(this);
|
|
154
|
-
const headers =
|
|
155
|
-
...this._httpHeadersCallback?.() || {},
|
|
156
|
-
Accept: 'application/json',
|
|
157
|
-
'Content-Type': 'application/json'
|
|
158
|
-
};
|
|
159
|
-
if (this._microservice?.length > 0) {
|
|
160
|
-
headers[Globals.Globals.microserviceHttpHeader] = this._microservice;
|
|
161
|
-
}
|
|
168
|
+
const headers = this.buildRequestHeaders();
|
|
162
169
|
const response = await QueryHttpRequest.executeQueryHttpRequest(this._httpMethod, {
|
|
163
170
|
route: this.route,
|
|
164
171
|
apiBasePath: this._apiBasePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservableQueryFor.js","sources":["../../../queries/ObservableQueryFor.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { IObservableQueryFor, OnNextResult } from './IObservableQueryFor.js';\nimport { ObservableQuerySubscription } from './ObservableQuerySubscription.js';\nimport { ValidateRequestArguments } from './ValidateRequestArguments.js';\nimport type { QueryValidator } from './QueryValidator.js';\nimport type { IObservableQueryConnection } from './IObservableQueryConnection.js';\nimport { NullObservableQueryConnection } from './NullObservableQueryConnection.js';\nimport { PollingOptions } from './PollingOptions.js';\nimport { createObservableQueryConnection, connectsToQueryRoute } from './ObservableQueryConnectionFactory.js';\nimport type { Constructor } from '@cratis/fundamentals';\nimport { deserializeQueryModel, deserializeQueryModels } from './deserializeQueryModel.js';\nimport { QueryResult } from './QueryResult.js';\nimport { Sorting } from './Sorting.js';\nimport { Paging } from './Paging.js';\nimport { SortDirection } from './SortDirection.js';\nimport { Globals } from '../Globals.js';\nimport { UrlHelpers } from '../UrlHelpers.js';\nimport type { GetHttpHeaders } from '../GetHttpHeaders.js';\nimport type { ParameterDescriptor } from '../reflection/ParameterDescriptor.js';\nimport { ParametersHelper } from '../reflection/ParametersHelper.js';\nimport { SliceLocation } from '../reflection/SliceLocation.js';\nimport type { QueryHttpMethod } from './QueryHttpMethod.js';\nimport { executeQueryHttpRequest } from './QueryHttpRequest.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Represents an implementation of {@link IQueryFor}.\n * @template TDataType Type of data returned by the query.\n */\nexport abstract class ObservableQueryFor<\n TDataType,\n TParameters = object,\n> implements IObservableQueryFor<TDataType, TParameters> {\n /**\n * Gets the {@link SliceLocation} of the query. Generated proxies override it with the location resolved from the backend namespace.\n */\n static readonly sliceLocation: SliceLocation = SliceLocation.empty;\n\n private _microservice: string;\n private _apiBasePath: string;\n private _origin: string;\n private _connection?: IObservableQueryConnection<TDataType>;\n private _httpHeadersCallback: GetHttpHeaders;\n private _httpMethod?: QueryHttpMethod;\n private _pollingOptions?: Partial<PollingOptions>;\n\n abstract readonly route: string;\n abstract readonly defaultValue: TDataType;\n readonly roles: string[] = [];\n readonly validation?: QueryValidator<any>;\n /** Backend fully-qualified query name used when subscribing via the SSE hub. Overridden in generated proxies. */\n readonly queryName?: string;\n abstract readonly parameterDescriptors: ParameterDescriptor[];\n abstract get requiredRequestParameters(): string[];\n sorting: Sorting;\n paging: Paging;\n\n /**\n * Initializes a new instance of the {@link ObservableQueryFor<,>}} class.\n * @param modelType Type of model, if an enumerable, this is the instance type.\n * @param enumerable Whether or not it is an enumerable.\n */\n constructor(\n readonly modelType: Constructor,\n readonly enumerable: boolean,\n ) {\n this.sorting = Sorting.none;\n this.paging = Paging.noPaging;\n this._microservice = Globals.microservice ?? '';\n this._apiBasePath = Globals.apiBasePath ?? '';\n this._origin = Globals.origin ?? '';\n this._httpHeadersCallback = () => ({});\n }\n\n /**\n * Disposes the query.\n */\n dispose() {\n this._connection?.disconnect();\n }\n\n /** @inheritdoc */\n setMicroservice(microservice: string) {\n this._microservice = microservice;\n }\n\n /** @inheritdoc */\n setApiBasePath(apiBasePath: string): void {\n this._apiBasePath = apiBasePath;\n }\n\n /** @inheritdoc */\n setOrigin(origin: string): void {\n this._origin = origin;\n }\n\n /** @inheritdoc */\n setHttpHeadersCallback(callback: GetHttpHeaders): void {\n this._httpHeadersCallback = callback;\n }\n\n /**\n * Overrides {@link Globals.queryPollingOptions} for this query instance on its next subscription.\n * @param options The polling timing overrides to apply on the next subscribe.\n */\n setPollingOptions(options: Partial<PollingOptions>): void {\n this._pollingOptions = options;\n }\n\n /** @inheritdoc */\n setHttpMethod(method: QueryHttpMethod): void {\n this._httpMethod = method;\n }\n\n /** @inheritdoc */\n subscribe(\n callback: OnNextResult<QueryResult<TDataType>>,\n args?: TParameters,\n ): ObservableQuerySubscription<TDataType> {\n if (this._connection) {\n this._connection.disconnect();\n }\n\n const clientValidationErrors =\n this.validation?.validate((args as object) || {}) || [];\n if (clientValidationErrors.length > 0) {\n // Serve the failure through the connection rather than throwing, so a subscriber sees an invalid result\n // on its normal callback path instead of the empty result an unestablished connection would emit.\n this._connection = new NullObservableQueryConnection(\n this.defaultValue,\n QueryResult.validationFailed(clientValidationErrors, this),\n );\n } else if (this.validateArguments(args)) {\n this._connection = createObservableQueryConnection({\n route: this.route,\n queryName: this.queryName ?? this.constructor.name,\n origin: this._origin,\n apiBasePath: this._apiBasePath,\n microservice: this._microservice,\n args: args as object,\n httpHeadersCallback: this._httpHeadersCallback,\n pollingOptions: this._pollingOptions,\n });\n } else {\n this._connection = new NullObservableQueryConnection(this.defaultValue);\n }\n\n // Descriptor-backed instance properties provide defaults; fresh args passed to subscribe()\n // must take precedence over any stale instance property values. Spread parameterValues\n // first so that the caller-supplied args can override them.\n //\n // In direct mode or polling the route arguments are already embedded in the URL path, so only\n // the unused (non-route) parameters are appended as additional query arguments.\n // In multiplexed mode ALL arguments — including route-derived ones — must be included\n // in the subscribe payload so the server can execute the query correctly.\n const parameterValues = ParametersHelper.collectParameterValues(this);\n const { unusedParameters } = UrlHelpers.replaceRouteParameters(\n this.route,\n args as object,\n );\n const connectionQueryArguments: any = {\n ...parameterValues,\n ...(connectsToQueryRoute() ? unusedParameters : (args as object) || {}),\n ...this.buildQueryArguments(),\n };\n\n const subscriber = new ObservableQuerySubscription(this._connection);\n this._connection.connect((data) => {\n const result: any = data;\n try {\n // Observable transports deliver structural query-result envelopes directly instead of\n // constructing QueryResult. Servers predating readiness therefore omit the member;\n // those results are complete by definition and must be normalized before subscribers\n // observe them. Preserve an explicit false transient state from newer servers.\n result.isReady ??= true;\n this.deserializeResult(result);\n callback(result);\n } catch (ex) {\n console.log(ex);\n }\n }, connectionQueryArguments);\n return subscriber;\n }\n\n /** @inheritdoc */\n async perform(args?: TParameters): Promise<QueryResult<TDataType>> {\n const noSuccess = {\n ...QueryResult.noSuccess,\n ...{ data: this.defaultValue },\n } as QueryResult<TDataType>;\n\n const clientValidationErrors =\n this.validation?.validate((args as object) || {}) || [];\n if (clientValidationErrors.length > 0) {\n return QueryResult.validationFailed(clientValidationErrors, this);\n }\n\n if (!this.validateArguments(args)) {\n return new Promise<QueryResult<TDataType>>((resolve) => {\n resolve(noSuccess);\n });\n }\n\n // Collect parameter values from parameterDescriptors that are set\n const parameterValues = ParametersHelper.collectParameterValues(this);\n\n const headers = {\n ...(this._httpHeadersCallback?.() || {}),\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n\n if (this._microservice?.length > 0) {\n headers[Globals.microserviceHttpHeader] = this._microservice;\n }\n\n const response = await executeQueryHttpRequest(this._httpMethod, {\n route: this.route,\n apiBasePath: this._apiBasePath,\n origin: this._origin,\n args: (args as object) ?? {},\n parameterValues,\n paging: this.paging,\n sorting: this.sorting,\n headers,\n });\n\n try {\n const result = await response.json();\n return new QueryResult(result, this.modelType, this.enumerable);\n } catch {\n return noSuccess;\n }\n }\n\n private validateArguments(args?: TParameters): boolean {\n const parameterValues = ParametersHelper.collectParameterValues(this);\n const combinedArgs = { ...((args as object) || {}), ...parameterValues };\n return ValidateRequestArguments(\n this.constructor.name,\n this.requiredRequestParameters,\n combinedArgs as object,\n );\n }\n\n private buildQueryArguments(): any {\n const queryArguments: any = {};\n\n if (this.paging && this.paging.pageSize > 0) {\n queryArguments.pageSize = this.paging.pageSize;\n queryArguments.page = this.paging.page;\n }\n\n if (this.sorting.hasSorting) {\n queryArguments.sortBy = this.sorting.field;\n queryArguments.sortDirection =\n this.sorting.direction === SortDirection.descending ? 'desc' : 'asc';\n }\n\n return queryArguments;\n }\n\n private deserializeResult(result: any): void {\n if (this.enumerable) {\n result.data = deserializeQueryModels(this.modelType, result.data);\n } else if (result.data) {\n result.data = deserializeQueryModel(this.modelType, result.data);\n }\n }\n}\n"],"names":["ObservableQueryFor","sliceLocation","SliceLocation","empty","_microservice","_apiBasePath","_origin","_connection","_httpHeadersCallback","_httpMethod","_pollingOptions","roles","validation","queryName","sorting","paging","enumerable","modelType","Sorting","none","Paging","noPaging","Globals","microservice","apiBasePath","origin","dispose","disconnect","setMicroservice","setApiBasePath","setOrigin","setHttpHeadersCallback","callback","setPollingOptions","options","setHttpMethod","method","subscribe","args","clientValidationErrors","validate","length","NullObservableQueryConnection","defaultValue","QueryResult","validationFailed","validateArguments","createObservableQueryConnection","route","name","httpHeadersCallback","pollingOptions","parameterValues","ParametersHelper","collectParameterValues","unusedParameters","UrlHelpers","replaceRouteParameters","connectionQueryArguments","connectsToQueryRoute","buildQueryArguments","subscriber","ObservableQuerySubscription","connect","data","result","isReady","deserializeResult","ex","console","log","perform","noSuccess","Promise","resolve","headers","Accept","microserviceHttpHeader","response","executeQueryHttpRequest","json","combinedArgs","ValidateRequestArguments","requiredRequestParameters","queryArguments","pageSize","page","hasSorting","sortBy","field","sortDirection","direction","SortDirection","descending","deserializeQueryModels","deserializeQueryModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ObservableQueryFor.js","sources":["../../../queries/ObservableQueryFor.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { IObservableQueryFor, OnNextResult } from './IObservableQueryFor.js';\nimport { ObservableQuerySubscription } from './ObservableQuerySubscription.js';\nimport { ValidateRequestArguments } from './ValidateRequestArguments.js';\nimport type { QueryValidator } from './QueryValidator.js';\nimport type { IObservableQueryConnection } from './IObservableQueryConnection.js';\nimport { NullObservableQueryConnection } from './NullObservableQueryConnection.js';\nimport { PollingOptions } from './PollingOptions.js';\nimport { createObservableQueryConnection, connectsToQueryRoute } from './ObservableQueryConnectionFactory.js';\nimport type { Constructor } from '@cratis/fundamentals';\nimport { deserializeQueryModel, deserializeQueryModels } from './deserializeQueryModel.js';\nimport { QueryResult } from './QueryResult.js';\nimport { Sorting } from './Sorting.js';\nimport { Paging } from './Paging.js';\nimport { SortDirection } from './SortDirection.js';\nimport { Globals } from '../Globals.js';\nimport { UrlHelpers } from '../UrlHelpers.js';\nimport type { GetHttpHeaders } from '../GetHttpHeaders.js';\nimport type { ParameterDescriptor } from '../reflection/ParameterDescriptor.js';\nimport { ParametersHelper } from '../reflection/ParametersHelper.js';\nimport { SliceLocation } from '../reflection/SliceLocation.js';\nimport type { QueryHttpMethod } from './QueryHttpMethod.js';\nimport { executeQueryHttpRequest } from './QueryHttpRequest.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Represents an implementation of {@link IQueryFor}.\n * @template TDataType Type of data returned by the query.\n */\nexport abstract class ObservableQueryFor<\n TDataType,\n TParameters = object,\n> implements IObservableQueryFor<TDataType, TParameters> {\n /**\n * Gets the {@link SliceLocation} of the query. Generated proxies override it with the location resolved from the backend namespace.\n */\n static readonly sliceLocation: SliceLocation = SliceLocation.empty;\n\n private _microservice: string;\n private _apiBasePath: string;\n private _origin: string;\n private _connection?: IObservableQueryConnection<TDataType>;\n private _httpHeadersCallback: GetHttpHeaders;\n private _httpMethod?: QueryHttpMethod;\n private _pollingOptions?: Partial<PollingOptions>;\n\n abstract readonly route: string;\n abstract readonly defaultValue: TDataType;\n readonly roles: string[] = [];\n readonly validation?: QueryValidator<any>;\n /** Backend fully-qualified query name used when subscribing via the SSE hub. Overridden in generated proxies. */\n readonly queryName?: string;\n abstract readonly parameterDescriptors: ParameterDescriptor[];\n abstract get requiredRequestParameters(): string[];\n sorting: Sorting;\n paging: Paging;\n\n /**\n * Initializes a new instance of the {@link ObservableQueryFor<,>}} class.\n * @param modelType Type of model, if an enumerable, this is the instance type.\n * @param enumerable Whether or not it is an enumerable.\n */\n constructor(\n readonly modelType: Constructor,\n readonly enumerable: boolean,\n ) {\n this.sorting = Sorting.none;\n this.paging = Paging.noPaging;\n this._microservice = Globals.microservice ?? '';\n this._apiBasePath = Globals.apiBasePath ?? '';\n this._origin = Globals.origin ?? '';\n this._httpHeadersCallback = () => ({});\n }\n\n /**\n * Disposes the query.\n */\n dispose() {\n this._connection?.disconnect();\n }\n\n /** @inheritdoc */\n setMicroservice(microservice: string) {\n this._microservice = microservice;\n }\n\n /** @inheritdoc */\n setApiBasePath(apiBasePath: string): void {\n this._apiBasePath = apiBasePath;\n }\n\n /** @inheritdoc */\n setOrigin(origin: string): void {\n this._origin = origin;\n }\n\n /** @inheritdoc */\n setHttpHeadersCallback(callback: GetHttpHeaders): void {\n this._httpHeadersCallback = callback;\n }\n\n /**\n * Overrides {@link Globals.queryPollingOptions} for this query instance on its next subscription.\n * @param options The polling timing overrides to apply on the next subscribe.\n */\n setPollingOptions(options: Partial<PollingOptions>): void {\n this._pollingOptions = options;\n }\n\n /** @inheritdoc */\n setHttpMethod(method: QueryHttpMethod): void {\n this._httpMethod = method;\n }\n\n /** @inheritdoc */\n subscribe(\n callback: OnNextResult<QueryResult<TDataType>>,\n args?: TParameters,\n ): ObservableQuerySubscription<TDataType> {\n if (this._connection) {\n this._connection.disconnect();\n }\n\n this._connection = this.createConnection(args);\n\n // Descriptor-backed instance properties provide defaults; fresh args passed to subscribe()\n // must take precedence over any stale instance property values. Spread parameterValues\n // first so that the caller-supplied args can override them.\n //\n // In direct mode or polling the route arguments are already embedded in the URL path, so only\n // the unused (non-route) parameters are appended as additional query arguments.\n // In multiplexed mode ALL arguments — including route-derived ones — must be included\n // in the subscribe payload so the server can execute the query correctly.\n const parameterValues = ParametersHelper.collectParameterValues(this);\n const { unusedParameters } = UrlHelpers.replaceRouteParameters(\n this.route,\n args as object,\n );\n const connectionQueryArguments: any = {\n ...parameterValues,\n ...(connectsToQueryRoute() ? unusedParameters : (args as object) || {}),\n ...this.buildQueryArguments(),\n };\n\n const subscriber = new ObservableQuerySubscription(this._connection);\n this._connection.connect((data) => {\n const result: any = data;\n try {\n // Observable transports deliver structural query-result envelopes directly instead of\n // constructing QueryResult. Servers predating readiness therefore omit the member;\n // those results are complete by definition and must be normalized before subscribers\n // observe them. Preserve an explicit false transient state from newer servers.\n result.isReady ??= true;\n this.deserializeResult(result);\n callback(result);\n } catch (ex) {\n console.log(ex);\n }\n }, connectionQueryArguments);\n return subscriber;\n }\n\n private createConnection(args?: TParameters): IObservableQueryConnection<TDataType> {\n const clientValidationErrors =\n this.validation?.validate((args as object) || {}) || [];\n if (clientValidationErrors.length > 0) {\n // Serve the failure through the connection rather than throwing, so a subscriber sees an invalid result\n // on its normal callback path instead of the empty result an unestablished connection would emit.\n return new NullObservableQueryConnection(\n this.defaultValue,\n QueryResult.validationFailed(clientValidationErrors, this),\n );\n }\n\n if (!this.validateArguments(args)) {\n return new NullObservableQueryConnection(this.defaultValue);\n }\n\n return createObservableQueryConnection({\n route: this.route,\n queryName: this.queryName ?? this.constructor.name,\n origin: this._origin,\n apiBasePath: this._apiBasePath,\n microservice: this._microservice,\n args: args as object,\n httpHeadersCallback: this._httpHeadersCallback,\n pollingOptions: this._pollingOptions,\n });\n }\n\n private buildRequestHeaders(): Record<string, any> {\n const headers: Record<string, any> = {\n ...(this._httpHeadersCallback?.() || {}),\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n\n if (this._microservice?.length > 0) {\n headers[Globals.microserviceHttpHeader] = this._microservice;\n }\n return headers;\n }\n\n /** @inheritdoc */\n async perform(args?: TParameters): Promise<QueryResult<TDataType>> {\n const noSuccess = {\n ...QueryResult.noSuccess,\n ...{ data: this.defaultValue },\n } as QueryResult<TDataType>;\n\n const clientValidationErrors =\n this.validation?.validate((args as object) || {}) || [];\n if (clientValidationErrors.length > 0) {\n return QueryResult.validationFailed(clientValidationErrors, this);\n }\n\n if (!this.validateArguments(args)) {\n return new Promise<QueryResult<TDataType>>((resolve) => {\n resolve(noSuccess);\n });\n }\n\n // Collect parameter values from parameterDescriptors that are set\n const parameterValues = ParametersHelper.collectParameterValues(this);\n\n const headers = this.buildRequestHeaders();\n\n const response = await executeQueryHttpRequest(this._httpMethod, {\n route: this.route,\n apiBasePath: this._apiBasePath,\n origin: this._origin,\n args: (args as object) ?? {},\n parameterValues,\n paging: this.paging,\n sorting: this.sorting,\n headers,\n });\n\n try {\n const result = await response.json();\n return new QueryResult(result, this.modelType, this.enumerable);\n } catch {\n return noSuccess;\n }\n }\n\n private validateArguments(args?: TParameters): boolean {\n const parameterValues = ParametersHelper.collectParameterValues(this);\n const combinedArgs = { ...((args as object) || {}), ...parameterValues };\n return ValidateRequestArguments(\n this.constructor.name,\n this.requiredRequestParameters,\n combinedArgs as object,\n );\n }\n\n private buildQueryArguments(): any {\n const queryArguments: any = {};\n\n if (this.paging && this.paging.pageSize > 0) {\n queryArguments.pageSize = this.paging.pageSize;\n queryArguments.page = this.paging.page;\n }\n\n if (this.sorting.hasSorting) {\n queryArguments.sortBy = this.sorting.field;\n queryArguments.sortDirection =\n this.sorting.direction === SortDirection.descending ? 'desc' : 'asc';\n }\n\n return queryArguments;\n }\n\n private deserializeResult(result: any): void {\n if (this.enumerable) {\n result.data = deserializeQueryModels(this.modelType, result.data);\n } else if (result.data) {\n result.data = deserializeQueryModel(this.modelType, result.data);\n }\n }\n}\n"],"names":["ObservableQueryFor","sliceLocation","SliceLocation","empty","_microservice","_apiBasePath","_origin","_connection","_httpHeadersCallback","_httpMethod","_pollingOptions","roles","validation","queryName","sorting","paging","enumerable","modelType","Sorting","none","Paging","noPaging","Globals","microservice","apiBasePath","origin","dispose","disconnect","setMicroservice","setApiBasePath","setOrigin","setHttpHeadersCallback","callback","setPollingOptions","options","setHttpMethod","method","subscribe","args","createConnection","parameterValues","ParametersHelper","collectParameterValues","unusedParameters","UrlHelpers","replaceRouteParameters","route","connectionQueryArguments","connectsToQueryRoute","buildQueryArguments","subscriber","ObservableQuerySubscription","connect","data","result","isReady","deserializeResult","ex","console","log","clientValidationErrors","validate","length","NullObservableQueryConnection","defaultValue","QueryResult","validationFailed","validateArguments","createObservableQueryConnection","name","httpHeadersCallback","pollingOptions","buildRequestHeaders","headers","Accept","microserviceHttpHeader","perform","noSuccess","Promise","resolve","response","executeQueryHttpRequest","json","combinedArgs","ValidateRequestArguments","requiredRequestParameters","queryArguments","pageSize","page","hasSorting","sortBy","field","sortDirection","direction","SortDirection","descending","deserializeQueryModels","deserializeQueryModel"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryInstanceCache.d.ts","sourceRoot":"","sources":["../../../queries/QueryInstanceCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EACR,gBAAgB,EAEnB,MAAM,yCAAyC,CAAC;AAOjD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAKnC,MAAM,MAAM,kBAAkB,CAAC,SAAS,IAAI,CACxC,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,KACtC,IAAI,CAAC;AAMV,MAAM,WAAW,eAAe,CAAC,SAAS;IAItC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAK3B,UAAU,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAK7C,eAAe,EAAE,MAAM,CAAC;IAKxB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAMvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAKtB,UAAU,EAAE,OAAO,CAAC;IAOpB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAClD;AAUD,qBAAa,kBAAkB;IAWf,OAAO,CAAC,QAAQ,CAAC,YAAY;IAVzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAC/E,OAAO,CAAC,eAAe,CAAC,CAAgC;IASxD,YAA6B,YAAY,GAAE,MAAe,EAAI;IAU9D,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAa5D;IAUD,WAAW,CAAC,SAAS,EACjB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,SAAS,GACzB;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAgBzC;IASD,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAWhC;IAQD,aAAa,CAAC,SAAS,EACnB,GAAG,EAAE,aAAa,GACnB,oBAAoB,CAAC,SAAS,CAAC,GAAG,SAAS,CAI7C;IAQD,aAAa,CAAC,SAAS,EACnB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACxC,IAAI,CAoCN;IAUD,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,qBAAqB;IAmB7B,WAAW,CAAC,SAAS,EACjB,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACxC,IAAI,CAMN;IAQD,cAAc,CAAC,SAAS,EACpB,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACxC,IAAI,CAMN;IAQD,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAO1D;IAOD,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAExC;IAUD,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAuBhC;IAOD,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAE/B;IAYD,wBAAwB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"QueryInstanceCache.d.ts","sourceRoot":"","sources":["../../../queries/QueryInstanceCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EACR,gBAAgB,EAEnB,MAAM,yCAAyC,CAAC;AAOjD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAKnC,MAAM,MAAM,kBAAkB,CAAC,SAAS,IAAI,CACxC,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,KACtC,IAAI,CAAC;AAMV,MAAM,WAAW,eAAe,CAAC,SAAS;IAItC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAK3B,UAAU,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAK7C,eAAe,EAAE,MAAM,CAAC;IAKxB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAMvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAKtB,UAAU,EAAE,OAAO,CAAC;IAOpB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAClD;AAUD,qBAAa,kBAAkB;IAWf,OAAO,CAAC,QAAQ,CAAC,YAAY;IAVzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAC/E,OAAO,CAAC,eAAe,CAAC,CAAgC;IASxD,YAA6B,YAAY,GAAE,MAAe,EAAI;IAU9D,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAa5D;IAUD,WAAW,CAAC,SAAS,EACjB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,SAAS,GACzB;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAgBzC;IASD,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAWhC;IAQD,aAAa,CAAC,SAAS,EACnB,GAAG,EAAE,aAAa,GACnB,oBAAoB,CAAC,SAAS,CAAC,GAAG,SAAS,CAI7C;IAQD,aAAa,CAAC,SAAS,EACnB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACxC,IAAI,CAoCN;IAUD,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,qBAAqB;IAmB7B,WAAW,CAAC,SAAS,EACjB,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACxC,IAAI,CAMN;IAQD,cAAc,CAAC,SAAS,EACpB,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACxC,IAAI,CAMN;IAQD,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAO1D;IAOD,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAExC;IAUD,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAuBhC;IAOD,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAE/B;IAYD,wBAAwB,IAAI,IAAI,CAI/B;IAED,OAAO,CAAC,aAAa;IAgBrB,OAAO,IAAI,IAAI,CAGd;IAWD,YAAY,IAAI,IAAI,CASnB;IAQD,oBAAoB,IAAI,IAAI,CAK3B;IAMD,sBAAsB,IAAI,gBAAgB,CAwCzC;CACJ"}
|
|
@@ -226,29 +226,24 @@ var deepEqual = require('../deepEqual.js');
|
|
|
226
226
|
* credentials).
|
|
227
227
|
*/ teardownAllSubscriptions() {
|
|
228
228
|
for (const [, entry] of this._entries){
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
entry.
|
|
235
|
-
entry.
|
|
229
|
+
this.teardownEntry(entry);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
teardownEntry(entry) {
|
|
233
|
+
if (entry.pendingCleanup !== undefined) {
|
|
234
|
+
clearTimeout(entry.pendingCleanup);
|
|
235
|
+
entry.pendingCleanup = undefined;
|
|
236
236
|
}
|
|
237
|
+
entry.subscribed = false;
|
|
238
|
+
entry.teardown?.();
|
|
239
|
+
entry.teardown = undefined;
|
|
237
240
|
}
|
|
238
241
|
/**
|
|
239
242
|
* Immediately tears down all subscriptions, cancels any pending deferred cleanups,
|
|
240
243
|
* and evicts all entries. Call when the owning component (e.g. the {@link Arc} provider)
|
|
241
244
|
* unmounts permanently so that all query connections are closed synchronously.
|
|
242
245
|
*/ dispose() {
|
|
243
|
-
|
|
244
|
-
if (entry.pendingCleanup !== undefined) {
|
|
245
|
-
clearTimeout(entry.pendingCleanup);
|
|
246
|
-
entry.pendingCleanup = undefined;
|
|
247
|
-
}
|
|
248
|
-
entry.subscribed = false;
|
|
249
|
-
entry.teardown?.();
|
|
250
|
-
entry.teardown = undefined;
|
|
251
|
-
}
|
|
246
|
+
this.teardownAllSubscriptions();
|
|
252
247
|
this._entries.clear();
|
|
253
248
|
}
|
|
254
249
|
/**
|