@nmshd/runtime 1.2.1 → 1.2.2
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/dist/buildInformation.js +5 -5
- package/dist/useCases/common/SchemaRepository.d.ts +5 -4
- package/dist/useCases/common/SchemaRepository.js +11 -9
- package/dist/useCases/common/SchemaRepository.js.map +1 -1
- package/dist/useCases/common/Schemas.d.ts +78 -1602
- package/dist/useCases/common/Schemas.js +172 -57
- package/dist/useCases/common/Schemas.js.map +1 -1
- package/dist/useCases/common/UseCase.d.ts +1 -4
- package/dist/useCases/common/UseCase.js.map +1 -1
- package/dist/useCases/common/index.d.ts +2 -0
- package/dist/useCases/common/index.js +2 -0
- package/dist/useCases/common/index.js.map +1 -1
- package/dist/useCases/common/validation/IValidator.d.ts +4 -0
- package/dist/useCases/common/validation/IValidator.js +3 -0
- package/dist/useCases/common/validation/IValidator.js.map +1 -0
- package/dist/useCases/common/validation/SchemaValidator.d.ts +10 -0
- package/dist/useCases/common/{SchemaValidator.js → validation/SchemaValidator.js} +3 -0
- package/dist/useCases/common/validation/SchemaValidator.js.map +1 -0
- package/dist/useCases/transport/files/CreateTokenForFile.d.ts +1 -3
- package/dist/useCases/transport/files/CreateTokenForFile.js +2 -4
- package/dist/useCases/transport/files/CreateTokenForFile.js.map +1 -1
- package/dist/useCases/transport/files/CreateTokenQrCodeForFile.d.ts +1 -3
- package/dist/useCases/transport/files/CreateTokenQrCodeForFile.js +2 -4
- package/dist/useCases/transport/files/CreateTokenQrCodeForFile.js.map +1 -1
- package/dist/useCases/transport/files/DownloadFile.d.ts +1 -3
- package/dist/useCases/transport/files/DownloadFile.js +2 -4
- package/dist/useCases/transport/files/DownloadFile.js.map +1 -1
- package/dist/useCases/transport/files/GetFile.d.ts +1 -3
- package/dist/useCases/transport/files/GetFile.js +2 -4
- package/dist/useCases/transport/files/GetFile.js.map +1 -1
- package/dist/useCases/transport/files/LoadPeerFile.d.ts +24 -13
- package/dist/useCases/transport/files/LoadPeerFile.js +36 -37
- package/dist/useCases/transport/files/LoadPeerFile.js.map +1 -1
- package/lib-web/nmshd.runtime.js +556 -158
- package/lib-web/nmshd.runtime.js.map +1 -1
- package/lib-web/nmshd.runtime.min.js +2 -2
- package/lib-web/nmshd.runtime.min.js.map +1 -1
- package/package.json +16 -16
- package/dist/useCases/common/SchemaValidator.d.ts +0 -9
- package/dist/useCases/common/SchemaValidator.js.map +0 -1
|
@@ -17,17 +17,15 @@ const ts_utils_1 = require("@js-soft/ts-utils");
|
|
|
17
17
|
const transport_1 = require("@nmshd/transport");
|
|
18
18
|
const typescript_ioc_1 = require("typescript-ioc");
|
|
19
19
|
const common_1 = require("../../common");
|
|
20
|
-
const SchemaRepository_1 = require("../../common/SchemaRepository");
|
|
21
|
-
const SchemaValidator_1 = require("../../common/SchemaValidator");
|
|
22
20
|
const FileMapper_1 = require("./FileMapper");
|
|
23
|
-
let Validator = class Validator extends
|
|
21
|
+
let Validator = class Validator extends common_1.SchemaValidator {
|
|
24
22
|
constructor(schemaRepository) {
|
|
25
23
|
super(schemaRepository.getSchema("DownloadFileRequest"));
|
|
26
24
|
}
|
|
27
25
|
};
|
|
28
26
|
Validator = __decorate([
|
|
29
27
|
__param(0, typescript_ioc_1.Inject),
|
|
30
|
-
__metadata("design:paramtypes", [
|
|
28
|
+
__metadata("design:paramtypes", [common_1.SchemaRepository])
|
|
31
29
|
], Validator);
|
|
32
30
|
let DownloadFileUseCase = class DownloadFileUseCase extends common_1.UseCase {
|
|
33
31
|
constructor(fileController, validator) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadFile.js","sourceRoot":"","sources":["../../../../src/useCases/transport/files/DownloadFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAA2C;AAC3C,gDAAgE;AAChE,mDAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"DownloadFile.js","sourceRoot":"","sources":["../../../../src/useCases/transport/files/DownloadFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAA2C;AAC3C,gDAAgE;AAChE,mDAAwC;AACxC,yCAAyF;AACzF,6CAA0C;AAS1C,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,wBAAoC;IACxD,YAA2B,gBAAkC;QACzD,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ,CAAA;AAJK,SAAS;IACS,WAAA,uBAAM,CAAA;qCAAmB,yBAAgB;GAD3D,SAAS,CAId;AAQD,IAAa,mBAAmB,GAAhC,MAAa,mBAAoB,SAAQ,gBAAkD;IACvF,YAA4C,cAA8B,EAAU,SAAoB;QACpG,KAAK,CAAC,SAAS,CAAC,CAAC;QADuB,mBAAc,GAAd,cAAc,CAAgB;IAE1E,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAA4B;QACxD,MAAM,MAAM,GAAG,kBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,YAAY,EAAE;YACf,OAAO,iBAAM,CAAC,IAAI,CAAC,sBAAa,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAI,CAAC,CAAC,CAAC;SAClE;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAEnF,MAAM,MAAM,GAAG,iBAAM,CAAC,EAAE,CAAC,uBAAU,CAAC,sBAAsB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;QAEvF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAA;AAnBY,mBAAmB;IACR,WAAA,uBAAM,CAAA;IAAmD,WAAA,uBAAM,CAAA;qCAAvB,0BAAc,EAAqB,SAAS;GAD/F,mBAAmB,CAmB/B;AAnBY,kDAAmB"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Result } from "@js-soft/ts-utils";
|
|
2
2
|
import { FileController } from "@nmshd/transport";
|
|
3
3
|
import { FileDTO } from "../../../types";
|
|
4
|
-
import { UseCase } from "../../common";
|
|
5
|
-
import { SchemaRepository } from "../../common/SchemaRepository";
|
|
6
|
-
import { SchemaValidator } from "../../common/SchemaValidator";
|
|
4
|
+
import { SchemaRepository, SchemaValidator, UseCase } from "../../common";
|
|
7
5
|
export interface GetFileRequest {
|
|
8
6
|
/**
|
|
9
7
|
* @format fileId
|
|
@@ -17,17 +17,15 @@ const ts_utils_1 = require("@js-soft/ts-utils");
|
|
|
17
17
|
const transport_1 = require("@nmshd/transport");
|
|
18
18
|
const typescript_ioc_1 = require("typescript-ioc");
|
|
19
19
|
const common_1 = require("../../common");
|
|
20
|
-
const SchemaRepository_1 = require("../../common/SchemaRepository");
|
|
21
|
-
const SchemaValidator_1 = require("../../common/SchemaValidator");
|
|
22
20
|
const FileMapper_1 = require("./FileMapper");
|
|
23
|
-
let Validator = class Validator extends
|
|
21
|
+
let Validator = class Validator extends common_1.SchemaValidator {
|
|
24
22
|
constructor(schemaRepository) {
|
|
25
23
|
super(schemaRepository.getSchema("GetFileRequest"));
|
|
26
24
|
}
|
|
27
25
|
};
|
|
28
26
|
Validator = __decorate([
|
|
29
27
|
__param(0, typescript_ioc_1.Inject),
|
|
30
|
-
__metadata("design:paramtypes", [
|
|
28
|
+
__metadata("design:paramtypes", [common_1.SchemaRepository])
|
|
31
29
|
], Validator);
|
|
32
30
|
let GetFileUseCase = class GetFileUseCase extends common_1.UseCase {
|
|
33
31
|
constructor(fileController, validator) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetFile.js","sourceRoot":"","sources":["../../../../src/useCases/transport/files/GetFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAA2C;AAC3C,gDAAgE;AAChE,mDAAwC;AAExC,
|
|
1
|
+
{"version":3,"file":"GetFile.js","sourceRoot":"","sources":["../../../../src/useCases/transport/files/GetFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAA2C;AAC3C,gDAAgE;AAChE,mDAAwC;AAExC,yCAAyF;AACzF,6CAA0C;AAS1C,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,wBAA+B;IACnD,YAA2B,gBAAkC;QACzD,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxD,CAAC;CACJ,CAAA;AAJK,SAAS;IACS,WAAA,uBAAM,CAAA;qCAAmB,yBAAgB;GAD3D,SAAS,CAId;AAED,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,gBAAgC;IAChE,YAA4C,cAA8B,EAAU,SAAoB;QACpG,KAAK,CAAC,SAAS,CAAC,CAAC;QADuB,mBAAc,GAAd,cAAc,CAAgB;IAE1E,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAuB;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,iBAAM,CAAC,IAAI,CAAC,sBAAa,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAI,CAAC,CAAC,CAAC;SAClE;QAED,OAAO,iBAAM,CAAC,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;CACJ,CAAA;AAbY,cAAc;IACH,WAAA,uBAAM,CAAA;IAAmD,WAAA,uBAAM,CAAA;qCAAvB,0BAAc,EAAqB,SAAS;GAD/F,cAAc,CAa1B;AAbY,wCAAc"}
|
|
@@ -1,28 +1,39 @@
|
|
|
1
1
|
import { Result } from "@js-soft/ts-utils";
|
|
2
2
|
import { AccountController, FileController, TokenController } from "@nmshd/transport";
|
|
3
|
+
import { ValidationResult } from "fluent-ts-validator";
|
|
3
4
|
import { FileDTO } from "../../../types";
|
|
4
|
-
import {
|
|
5
|
-
export interface
|
|
5
|
+
import { SchemaRepository, SchemaValidator, UseCase } from "../../common";
|
|
6
|
+
export interface LoadPeerFileViaSecretRequest {
|
|
6
7
|
/**
|
|
7
8
|
* @format fileId
|
|
8
9
|
*/
|
|
9
|
-
id
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
id: string;
|
|
11
|
+
/**
|
|
12
|
+
* @minLength 100
|
|
13
|
+
*/
|
|
14
|
+
secretKey: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @errorMessage token reference invalid
|
|
18
|
+
*/
|
|
19
|
+
export interface LoadPeerFileViaReferenceRequest {
|
|
20
|
+
/**
|
|
21
|
+
* @pattern VE9L.{84}
|
|
22
|
+
*/
|
|
23
|
+
reference: string;
|
|
12
24
|
}
|
|
13
|
-
declare
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
private isCreatePeerFileFromTokenReferenceRequest;
|
|
25
|
+
export declare type LoadPeerFileRequest = LoadPeerFileViaSecretRequest | LoadPeerFileViaReferenceRequest;
|
|
26
|
+
declare class Validator extends SchemaValidator<LoadPeerFileRequest> {
|
|
27
|
+
private readonly loadViaSecretSchema;
|
|
28
|
+
private readonly loadViaReferenceSchema;
|
|
29
|
+
constructor(schemaRepository: SchemaRepository);
|
|
30
|
+
validate(input: LoadPeerFileRequest): ValidationResult;
|
|
20
31
|
}
|
|
21
32
|
export declare class LoadPeerFileUseCase extends UseCase<LoadPeerFileRequest, FileDTO> {
|
|
22
33
|
private readonly fileController;
|
|
23
34
|
private readonly tokenController;
|
|
24
35
|
private readonly accountController;
|
|
25
|
-
constructor(fileController: FileController, tokenController: TokenController, accountController: AccountController, validator:
|
|
36
|
+
constructor(fileController: FileController, tokenController: TokenController, accountController: AccountController, validator: Validator);
|
|
26
37
|
protected executeInternal(request: LoadPeerFileRequest): Promise<Result<FileDTO>>;
|
|
27
38
|
private createFileFromTokenReferenceRequest;
|
|
28
39
|
private loadFile;
|
|
@@ -16,45 +16,44 @@ exports.LoadPeerFileUseCase = void 0;
|
|
|
16
16
|
const ts_utils_1 = require("@js-soft/ts-utils");
|
|
17
17
|
const crypto_1 = require("@nmshd/crypto");
|
|
18
18
|
const transport_1 = require("@nmshd/transport");
|
|
19
|
+
const fluent_ts_validator_1 = require("fluent-ts-validator");
|
|
19
20
|
const typescript_ioc_1 = require("typescript-ioc");
|
|
20
21
|
const common_1 = require("../../common");
|
|
21
22
|
const FileMapper_1 = require("./FileMapper");
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
this.validateIfString((x) => x.id)
|
|
34
|
-
.fulfills(common_1.IdValidator.required(transport_1.BackboneIds.file))
|
|
35
|
-
.when(this.isCreatePeerFileFromIdAndKeyRequest);
|
|
36
|
-
this.validateIfString((x) => x.secretKey)
|
|
37
|
-
.isNotNull()
|
|
38
|
-
.when(this.isCreatePeerFileFromIdAndKeyRequest);
|
|
39
|
-
}
|
|
40
|
-
setupRulesForCreateFileFromTokenReferenceRequest() {
|
|
41
|
-
this.validateIfString((x) => x.reference)
|
|
42
|
-
.isNotNull()
|
|
43
|
-
.fulfills(this.isTokenReference)
|
|
44
|
-
.when(this.isCreatePeerFileFromTokenReferenceRequest);
|
|
45
|
-
}
|
|
46
|
-
isTokenReference(tokenReference) {
|
|
47
|
-
// "TOK" as Base64
|
|
48
|
-
const tokInBase64 = "VE9L";
|
|
49
|
-
return tokenReference.startsWith(tokInBase64);
|
|
50
|
-
}
|
|
51
|
-
isCreatePeerFileFromIdAndKeyRequest(x) {
|
|
52
|
-
return !!x.id && !!x.secretKey;
|
|
23
|
+
function isLoadPeerFileViaSecret(request) {
|
|
24
|
+
return "id" in request && "secretKey" in request;
|
|
25
|
+
}
|
|
26
|
+
function isLoadPeerFileViaReference(request) {
|
|
27
|
+
return "reference" in request;
|
|
28
|
+
}
|
|
29
|
+
let Validator = class Validator extends common_1.SchemaValidator {
|
|
30
|
+
constructor(schemaRepository) {
|
|
31
|
+
super(schemaRepository.getSchema("LoadPeerFileRequest"));
|
|
32
|
+
this.loadViaSecretSchema = schemaRepository.getSchema("LoadPeerFileViaSecretRequest");
|
|
33
|
+
this.loadViaReferenceSchema = schemaRepository.getSchema("LoadPeerFileViaReferenceRequest");
|
|
53
34
|
}
|
|
54
|
-
|
|
55
|
-
|
|
35
|
+
validate(input) {
|
|
36
|
+
let validationResult = this.schema.validate(input);
|
|
37
|
+
if (validationResult.isValid) {
|
|
38
|
+
return new fluent_ts_validator_1.ValidationResult();
|
|
39
|
+
}
|
|
40
|
+
// any-of in combination with missing properties is a bit weird
|
|
41
|
+
// when { reference: null | undefined } is passed, it ignores reference
|
|
42
|
+
// and treats it like a LoadPeerFileViaSecret.
|
|
43
|
+
// That's why we validate with the specific schema afterwards
|
|
44
|
+
if (isLoadPeerFileViaReference(input)) {
|
|
45
|
+
validationResult = this.loadViaReferenceSchema.validate(input);
|
|
46
|
+
}
|
|
47
|
+
else if (isLoadPeerFileViaSecret(input)) {
|
|
48
|
+
validationResult = this.loadViaSecretSchema.validate(input);
|
|
49
|
+
}
|
|
50
|
+
return this.convertValidationResult(validationResult);
|
|
56
51
|
}
|
|
57
|
-
}
|
|
52
|
+
};
|
|
53
|
+
Validator = __decorate([
|
|
54
|
+
__param(0, typescript_ioc_1.Inject),
|
|
55
|
+
__metadata("design:paramtypes", [common_1.SchemaRepository])
|
|
56
|
+
], Validator);
|
|
58
57
|
let LoadPeerFileUseCase = class LoadPeerFileUseCase extends common_1.UseCase {
|
|
59
58
|
constructor(fileController, tokenController, accountController, validator) {
|
|
60
59
|
super(validator);
|
|
@@ -64,11 +63,11 @@ let LoadPeerFileUseCase = class LoadPeerFileUseCase extends common_1.UseCase {
|
|
|
64
63
|
}
|
|
65
64
|
async executeInternal(request) {
|
|
66
65
|
let createdFile;
|
|
67
|
-
if (request
|
|
66
|
+
if (isLoadPeerFileViaSecret(request)) {
|
|
68
67
|
const key = await crypto_1.CryptoSecretKey.fromBase64(request.secretKey);
|
|
69
68
|
createdFile = await this.loadFile(transport_1.CoreId.from(request.id), key);
|
|
70
69
|
}
|
|
71
|
-
else if (request
|
|
70
|
+
else if (isLoadPeerFileViaReference(request)) {
|
|
72
71
|
createdFile = await this.createFileFromTokenReferenceRequest(request.reference);
|
|
73
72
|
}
|
|
74
73
|
else {
|
|
@@ -101,7 +100,7 @@ LoadPeerFileUseCase = __decorate([
|
|
|
101
100
|
__metadata("design:paramtypes", [transport_1.FileController,
|
|
102
101
|
transport_1.TokenController,
|
|
103
102
|
transport_1.AccountController,
|
|
104
|
-
|
|
103
|
+
Validator])
|
|
105
104
|
], LoadPeerFileUseCase);
|
|
106
105
|
exports.LoadPeerFileUseCase = LoadPeerFileUseCase;
|
|
107
106
|
//# sourceMappingURL=LoadPeerFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadPeerFile.js","sourceRoot":"","sources":["../../../../src/useCases/transport/files/LoadPeerFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAA2C;AAC3C,0CAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"LoadPeerFile.js","sourceRoot":"","sources":["../../../../src/useCases/transport/files/LoadPeerFile.ts"],"names":[],"mappings":"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"}
|