@steedos/server 3.0.13-beta.3 → 3.0.13-beta.32
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/api/data/data.controller.js +92 -106
- package/dist/api/data/data.controller.js.map +1 -1
- package/dist/api/data/data.service.js +18 -39
- package/dist/api/data/data.service.js.map +1 -1
- package/dist/app.controller.js +10 -1
- package/dist/app.controller.js.map +1 -1
- package/dist/app.gateway.js +127 -135
- package/dist/app.gateway.js.map +1 -1
- package/dist/app.module.js +7 -1
- package/dist/app.module.js.map +1 -1
- package/dist/app.moleculer.js +62 -77
- package/dist/app.moleculer.js.map +1 -1
- package/dist/bootstrap.js +138 -148
- package/dist/bootstrap.js.map +1 -1
- package/dist/config/index.js +10 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/moleculler.config.js +9 -20
- package/dist/config/moleculler.config.js.map +1 -1
- package/dist/config/steedos.config.js +38 -38
- package/dist/config/steedos.config.js.map +1 -1
- package/dist/objects/functions.controller.js +15 -19
- package/dist/objects/functions.controller.js.map +1 -1
- package/dist/objects/objects.controller.js +5 -17
- package/dist/objects/objects.controller.js.map +1 -1
- package/dist/objects/objects.service.js +30 -45
- package/dist/objects/objects.service.js.map +1 -1
- package/dist/workflow/file.controller.js +12 -23
- package/dist/workflow/file.controller.js.map +1 -1
- package/dist/workflow/file.moleculer.js +5 -13
- package/dist/workflow/file.moleculer.js.map +1 -1
- package/dist/workflow/file.service.js +126 -161
- package/dist/workflow/file.service.js.map +1 -1
- package/package.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.controller.js","sourceRoot":"","sources":["../../src/objects/functions.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"functions.controller.js","sourceRoot":"","sources":["../../src/objects/functions.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAUwB;AACxB,uDAAmD;AACnD,yCAA2C;AAC3C,6CAQyB;AAIlB,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACD;IAA7B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAOzD,AAAN,KAAK,CAAC,WAAW,CACR,GAAY,EACK,aAAqB,EACnB,eAAuB,EACxC,KAA0B;QAEnC,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;QAE/B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAC1C,aAAa,EACb,eAAe,EACf;YACE,UAAU,EAAE,aAAa;YACzB,eAAe;YACf,GAAG,KAAK;SACT,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAC3C,CAAC;IACJ,CAAC;IAaK,AAAN,KAAK,CAAC,eAAe,CACZ,GAAY,EACK,aAAqB,EACnB,eAAuB,EACzC,IAAyB;QAEjC,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;QAE/B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAC1C,aAAa,EACb,eAAe,EACf;YACE,UAAU,EAAE,aAAa;YACzB,eAAe;YACf,GAAG,IAAI;SACR,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAC3C,CAAC;IACJ,CAAC;CACF,CAAA;AA1DY,kDAAmB;AAQxB;IALL,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACb,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,2CAA2C;KACrD,CAAC;IACD,IAAA,YAAG,EAAC,iCAAiC,CAAC;IAEpC,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAK,EAAC,eAAe,CAAC,CAAA;IACtB,WAAA,IAAA,cAAK,EAAC,iBAAiB,CAAC,CAAA;IACxB,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAHI,OAAO;;sDAiBpB;AAaK;IAXL,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACb,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,2CAA2C;KACrD,CAAC;IACD,IAAA,aAAI,EAAC,iCAAiC,CAAC;IACvC,IAAA,iBAAO,EAAC;QACP,WAAW,EAAE,sDAAsD;QACnE,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;SACf;KACF,CAAC;IAEC,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAK,EAAC,eAAe,CAAC,CAAA;IACtB,WAAA,IAAA,cAAK,EAAC,iBAAiB,CAAC,CAAA;IACxB,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAHK,OAAO;;0DAiBpB;8BAzDU,mBAAmB;IAF/B,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,mBAAU,EAAC,mBAAmB,CAAC;qCAEe,gCAAc;GADhD,mBAAmB,CA0D/B"}
|
|
@@ -11,33 +11,21 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.ObjectsController = void 0;
|
|
25
16
|
const common_1 = require("@nestjs/common");
|
|
26
17
|
const objects_service_1 = require("./objects.service");
|
|
27
18
|
const core_1 = require("@builder6/core");
|
|
28
19
|
let ObjectsController = class ObjectsController {
|
|
20
|
+
objectsService;
|
|
29
21
|
constructor(objectsService) {
|
|
30
22
|
this.objectsService = objectsService;
|
|
31
23
|
}
|
|
32
|
-
getObject(objectApiName) {
|
|
33
|
-
return
|
|
34
|
-
return yield this.objectsService.getObjectConfig(objectApiName);
|
|
35
|
-
});
|
|
24
|
+
async getObject(objectApiName) {
|
|
25
|
+
return await this.objectsService.getObjectConfig(objectApiName);
|
|
36
26
|
}
|
|
37
|
-
getObjectSimplified(objectApiName) {
|
|
38
|
-
return
|
|
39
|
-
return yield this.objectsService.getObjectSimplified(objectApiName);
|
|
40
|
-
});
|
|
27
|
+
async getObjectSimplified(objectApiName) {
|
|
28
|
+
return await this.objectsService.getObjectSimplified(objectApiName);
|
|
41
29
|
}
|
|
42
30
|
};
|
|
43
31
|
exports.ObjectsController = ObjectsController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.controller.js","sourceRoot":"","sources":["../../src/objects/objects.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"objects.controller.js","sourceRoot":"","sources":["../../src/objects/objects.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,uDAAmD;AACnD,yCAA2C;AAIpC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAA7B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAGzD,AAAN,KAAK,CAAC,SAAS,CAAyB,aAAqB;QAC3D,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAyB,aAAqB;QACrE,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;CACF,CAAA;AAZY,8CAAiB;AAItB;IADL,IAAA,YAAG,EAAC,gBAAgB,CAAC;IACL,WAAA,IAAA,cAAK,EAAC,eAAe,CAAC,CAAA;;;;kDAEtC;AAGK;IADL,IAAA,YAAG,EAAC,2BAA2B,CAAC;IACN,WAAA,IAAA,cAAK,EAAC,eAAe,CAAC,CAAA;;;;4DAEhD;4BAXU,iBAAiB;IAF7B,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,mBAAU,EAAC,iBAAiB,CAAC;qCAEiB,gCAAc;GADhD,iBAAiB,CAY7B"}
|
|
@@ -8,60 +8,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
12
|
exports.ObjectsService = void 0;
|
|
22
13
|
const common_1 = require("@nestjs/common");
|
|
23
14
|
const objectql_1 = require("@steedos/objectql");
|
|
24
15
|
let ObjectsService = class ObjectsService {
|
|
25
16
|
constructor() { }
|
|
26
|
-
getObjectConfig(objectApiName) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return obj.getConfig();
|
|
33
|
-
});
|
|
17
|
+
async getObjectConfig(objectApiName) {
|
|
18
|
+
const obj = (0, objectql_1.getObject)(objectApiName);
|
|
19
|
+
if (!obj) {
|
|
20
|
+
throw new Error(`Object ${objectApiName} not found`);
|
|
21
|
+
}
|
|
22
|
+
return obj.getConfig();
|
|
34
23
|
}
|
|
35
|
-
getObjectSimplified(objectApiName) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
};
|
|
51
|
-
}
|
|
24
|
+
async getObjectSimplified(objectApiName) {
|
|
25
|
+
const obj = (0, objectql_1.getObject)(objectApiName);
|
|
26
|
+
if (!obj) {
|
|
27
|
+
throw new Error(`Object ${objectApiName} not found`);
|
|
28
|
+
}
|
|
29
|
+
const config = obj.getConfig();
|
|
30
|
+
const simplifiedFields = {};
|
|
31
|
+
for (const [key, value] of Object.entries(config.fields)) {
|
|
32
|
+
const field = value;
|
|
33
|
+
if (!field.hidden) {
|
|
34
|
+
simplifiedFields[key] = {
|
|
35
|
+
label: field.label,
|
|
36
|
+
type: field.type,
|
|
37
|
+
name: field.name,
|
|
38
|
+
};
|
|
52
39
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
name: config.name,
|
|
43
|
+
label: config.label,
|
|
44
|
+
fields: simplifiedFields,
|
|
45
|
+
};
|
|
59
46
|
}
|
|
60
|
-
runFunction(objectApiName, functionApiName, params, userSession) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return yield obj.runFunction(functionApiName, params, userSession);
|
|
64
|
-
});
|
|
47
|
+
async runFunction(objectApiName, functionApiName, params, userSession) {
|
|
48
|
+
const obj = (0, objectql_1.getObject)(objectApiName);
|
|
49
|
+
return await obj.runFunction(functionApiName, params, userSession);
|
|
65
50
|
}
|
|
66
51
|
};
|
|
67
52
|
exports.ObjectsService = ObjectsService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.service.js","sourceRoot":"","sources":["../../src/objects/objects.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"objects.service.js","sourceRoot":"","sources":["../../src/objects/objects.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gDAA8C;AAGvC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,gBAAe,CAAC;IAEhB,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,MAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,aAAa,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,UAAU,aAAa,YAAY,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,aAAqB;QAC7C,MAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,aAAa,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,UAAU,aAAa,YAAY,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAE/B,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,KAAY,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,gBAAgB,CAAC,GAAG,CAAC,GAAG;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,gBAAgB;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,aAAqB,EACrB,eAAuB,EACvB,MAAW,EACX,WAAiB;QAEjB,MAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,aAAa,CAAC,CAAC;QACrC,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;CACF,CAAA;AA9CY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;;GACA,cAAc,CA8C1B"}
|
|
@@ -11,15 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.InstanceFileController = void 0;
|
|
25
16
|
const common_1 = require("@nestjs/common");
|
|
@@ -28,25 +19,23 @@ const platform_express_1 = require("@nestjs/platform-express");
|
|
|
28
19
|
const swagger_1 = require("@nestjs/swagger");
|
|
29
20
|
const file_service_1 = require("./file.service");
|
|
30
21
|
let InstanceFileController = class InstanceFileController {
|
|
22
|
+
fileService;
|
|
23
|
+
mongodbService;
|
|
31
24
|
constructor(fileService, mongodbService) {
|
|
32
25
|
this.fileService = fileService;
|
|
33
26
|
this.mongodbService = mongodbService;
|
|
34
27
|
}
|
|
35
|
-
uploadFile(instanceId, req, file) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
copyFiles() {
|
|
48
|
-
return __awaiter(this, void 0, void 0, function* () { });
|
|
28
|
+
async uploadFile(instanceId, req, file) {
|
|
29
|
+
try {
|
|
30
|
+
const userSession = req.user;
|
|
31
|
+
const fields = req.body;
|
|
32
|
+
return await this.fileService.uploadFile(instanceId, file, fields, userSession);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
49
37
|
}
|
|
38
|
+
async copyFiles() { }
|
|
50
39
|
formatFileName(originalName, uploadFrom) {
|
|
51
40
|
if (uploadFrom === "mobile") {
|
|
52
41
|
return originalName.replace(/ /g, "_");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../src/workflow/file.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../src/workflow/file.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,yCAA2D;AAC3D,+DAA2D;AAC3D,6CAA0C;AAE1C,iDAA6C;AAKtC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAEvB;IACA;IAFV,YACU,WAAwB,EACxB,cAA8B;QAD9B,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAME,AAAN,KAAK,CAAC,UAAU,CACO,UAAkB,EAChC,GAAY,EACH,IAAS;QAEzB,IAAI,CAAC;YACH,MAAM,WAAW,GAAI,GAAW,CAAC,IAAI,CAAC;YAGtC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YAExB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CACtC,UAAU,EACV,IAAI,EACJ,MAAM,EACN,WAAW,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,KAAI,CAAC;IAEZ,cAAc,CAAC,YAAoB,EAAE,UAAmB;QAG9D,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAA;AA1CY,wDAAsB;AAU3B;IAHL,IAAA,kBAAS,EAAC,gBAAS,CAAC;IACpB,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;IACxC,IAAA,aAAI,EAAC,2BAA2B,CAAC;IAE/B,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,qBAAY,GAAE,CAAA;;;;wDAiBhB;iCA9BU,sBAAsB;IAFlC,IAAA,iBAAO,EAAC,OAAO,CAAC;IAChB,IAAA,mBAAU,EAAC,MAAM,CAAC;qCAGM,0BAAW;QACR,qBAAc;GAH7B,sBAAsB,CA0ClC"}
|
|
@@ -11,15 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.FileMoleculer = void 0;
|
|
25
16
|
const moleculer_1 = require("moleculer");
|
|
@@ -27,19 +18,20 @@ const common_1 = require("@nestjs/common");
|
|
|
27
18
|
const moleculer_2 = require("@builder6/moleculer");
|
|
28
19
|
const file_service_1 = require("./file.service");
|
|
29
20
|
let FileMoleculer = class FileMoleculer extends moleculer_1.Service {
|
|
21
|
+
fileService;
|
|
22
|
+
started = false;
|
|
30
23
|
constructor(broker, fileService) {
|
|
31
24
|
super(broker);
|
|
32
25
|
this.fileService = fileService;
|
|
33
|
-
this.started = false;
|
|
34
26
|
this.parseServiceSchema({
|
|
35
27
|
namespace: "steedos",
|
|
36
28
|
name: "instanceFiles",
|
|
37
29
|
settings: {},
|
|
38
30
|
actions: {
|
|
39
|
-
copyInstanceFiles: (ctx) =>
|
|
31
|
+
copyInstanceFiles: async (ctx) => {
|
|
40
32
|
const { sourceInstanceId, targetInstanceId, targetInstanceApproveId, userSession, options, } = ctx.params;
|
|
41
|
-
return
|
|
42
|
-
}
|
|
33
|
+
return await fileService.copyInstanceFiles(sourceInstanceId, targetInstanceId, targetInstanceApproveId, userSession, options);
|
|
34
|
+
},
|
|
43
35
|
},
|
|
44
36
|
events: {},
|
|
45
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.moleculer.js","sourceRoot":"","sources":["../../src/workflow/file.moleculer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.moleculer.js","sourceRoot":"","sources":["../../src/workflow/file.moleculer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA4D;AAC5D,2CAAoD;AACpD,mDAAmD;AACnD,iDAA6C;AAGtC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,mBAAO;IAI9B;IAHV,OAAO,GAAY,KAAK,CAAC;IACzB,YACkB,MAAqB,EAC7B,WAAwB;QAEhC,KAAK,CAAC,MAAM,CAAC,CAAC;QAFN,gBAAW,GAAX,WAAW,CAAa;QAIhC,IAAI,CAAC,kBAAkB,CAAC;YACtB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC/B,MAAM,EACJ,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,WAAW,EACX,OAAO,GACR,GAAG,GAAG,CAAC,MAAM,CAAC;oBACf,OAAO,MAAM,WAAW,CAAC,iBAAiB,CACxC,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,WAAW,EACX,OAAO,CACR,CAAC;gBACJ,CAAC;aACF;YACD,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,wBAAY,GAAE,CAAA;qCAAS,yBAAa;QAChB,0BAAW;GAJvB,aAAa,CAiCzB"}
|
|
@@ -41,22 +41,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
43
|
};
|
|
44
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
45
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
46
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
47
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
48
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
49
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
50
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
54
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
55
|
-
var m = o[Symbol.asyncIterator], i;
|
|
56
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
57
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
58
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
59
|
-
};
|
|
60
44
|
var FileService_1;
|
|
61
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
46
|
exports.FileService = void 0;
|
|
@@ -66,163 +50,144 @@ const core_1 = require("@builder6/core");
|
|
|
66
50
|
const files_1 = require("@builder6/files");
|
|
67
51
|
const COLLECTION_NAME = "cfs.instances.filerecord";
|
|
68
52
|
const stream_1 = require("stream");
|
|
69
|
-
function streamToMulterFile(stream, originalname, mimetype) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const buffer = Buffer.concat(chunks);
|
|
90
|
-
const multerFile = {
|
|
91
|
-
fieldname: "file",
|
|
92
|
-
originalname,
|
|
93
|
-
encoding: "7bit",
|
|
94
|
-
mimetype,
|
|
95
|
-
buffer,
|
|
96
|
-
size: buffer.length,
|
|
97
|
-
stream: stream_1.Readable.from(buffer),
|
|
98
|
-
destination: "",
|
|
99
|
-
filename: originalname,
|
|
100
|
-
path: "",
|
|
101
|
-
isUTF8: true,
|
|
102
|
-
};
|
|
103
|
-
return multerFile;
|
|
104
|
-
});
|
|
53
|
+
async function streamToMulterFile(stream, originalname, mimetype) {
|
|
54
|
+
const chunks = [];
|
|
55
|
+
for await (const chunk of stream) {
|
|
56
|
+
chunks.push(chunk);
|
|
57
|
+
}
|
|
58
|
+
const buffer = Buffer.concat(chunks);
|
|
59
|
+
const multerFile = {
|
|
60
|
+
fieldname: "file",
|
|
61
|
+
originalname,
|
|
62
|
+
encoding: "7bit",
|
|
63
|
+
mimetype,
|
|
64
|
+
buffer,
|
|
65
|
+
size: buffer.length,
|
|
66
|
+
stream: stream_1.Readable.from(buffer),
|
|
67
|
+
destination: "",
|
|
68
|
+
filename: originalname,
|
|
69
|
+
path: "",
|
|
70
|
+
isUTF8: true,
|
|
71
|
+
};
|
|
72
|
+
return multerFile;
|
|
105
73
|
}
|
|
106
74
|
let FileService = FileService_1 = class FileService {
|
|
75
|
+
filesService;
|
|
76
|
+
mongodbService;
|
|
107
77
|
constructor(filesService, mongodbService) {
|
|
108
78
|
this.filesService = filesService;
|
|
109
79
|
this.mongodbService = mongodbService;
|
|
110
|
-
this.logger = new common_1.Logger(FileService_1.name);
|
|
111
80
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
metadata.locked_by_name = locked_by_name;
|
|
151
|
-
}
|
|
152
|
-
yield this.mongodbService.findOneAndUpdate(COLLECTION_NAME, {
|
|
153
|
-
"metadata.parent": parentId,
|
|
154
|
-
"metadata.current": true,
|
|
155
|
-
}, {
|
|
156
|
-
$unset: {
|
|
157
|
-
"metadata.current": "",
|
|
158
|
-
},
|
|
159
|
-
}, {});
|
|
160
|
-
fileRecord = yield this.filesService.uploadFile(COLLECTION_NAME, file, {}, {
|
|
161
|
-
metadata: metadata,
|
|
162
|
-
});
|
|
163
|
-
if (fileRecord) {
|
|
164
|
-
if ((overwrite === null || overwrite === void 0 ? void 0 : overwrite.toLowerCase()) === "true") {
|
|
165
|
-
yield this.mongodbService.deleteMany(COLLECTION_NAME, {
|
|
166
|
-
"metadata.instance": instanceId,
|
|
167
|
-
"metadata.parent": parentId,
|
|
168
|
-
"metadata.owner": owner,
|
|
169
|
-
"metadata.approve": approve,
|
|
170
|
-
"metadata.current": {
|
|
171
|
-
$ne: true,
|
|
172
|
-
},
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
fileRecord = yield this.filesService.uploadFile(COLLECTION_NAME, file, {}, {
|
|
179
|
-
metadata: metadata,
|
|
180
|
-
});
|
|
181
|
-
yield this.mongodbService.findOneAndUpdateData(COLLECTION_NAME, { _id: fileRecord._id }, { "metadata.parent": fileRecord._id });
|
|
81
|
+
logger = new common_1.Logger(FileService_1.name);
|
|
82
|
+
async uploadFile(instanceId, file, fields, userSession) {
|
|
83
|
+
const userId = userSession["userId"];
|
|
84
|
+
const spaceId = userSession["spaceId"];
|
|
85
|
+
const { approve, is_private, owner = userId, owner_name = userSession["name"], space = spaceId, upload_from, isAddVersion, parent, main, locked_by, locked_by_name, overwrite, } = fields;
|
|
86
|
+
const deny_ext = process.env.STEEDOS_CFS_UPLOAD_DENY_EXT?.split(",") || [];
|
|
87
|
+
const fileName = this.formatFileName(file.originalname, upload_from);
|
|
88
|
+
const name_split = fileName.split(".");
|
|
89
|
+
const extension = name_split.pop();
|
|
90
|
+
if (_.includes(deny_ext, extension)) {
|
|
91
|
+
throw new common_1.BadRequestException(`禁止上传「${extension}」附件`);
|
|
92
|
+
}
|
|
93
|
+
const metadata = {
|
|
94
|
+
owner,
|
|
95
|
+
owner_name,
|
|
96
|
+
space,
|
|
97
|
+
instance: instanceId,
|
|
98
|
+
approve,
|
|
99
|
+
current: true,
|
|
100
|
+
is_private: _.isBoolean(is_private)
|
|
101
|
+
? is_private
|
|
102
|
+
: _.isString(is_private)
|
|
103
|
+
? is_private.toLowerCase() === "true"
|
|
104
|
+
: false,
|
|
105
|
+
};
|
|
106
|
+
if (main === "true" || main === true) {
|
|
107
|
+
metadata.main = true;
|
|
108
|
+
}
|
|
109
|
+
let parentId = "";
|
|
110
|
+
if (isAddVersion && parent) {
|
|
111
|
+
parentId = parent;
|
|
112
|
+
}
|
|
113
|
+
let fileRecord;
|
|
114
|
+
if (parentId) {
|
|
115
|
+
metadata.parent = parentId;
|
|
116
|
+
if (locked_by && locked_by_name) {
|
|
117
|
+
metadata.locked_by = locked_by;
|
|
118
|
+
metadata.locked_by_name = locked_by_name;
|
|
182
119
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
size: file.size,
|
|
186
|
-
};
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
copyInstanceFiles(sourceInstanceId_1, targetInstanceId_1, targetInstanceApproveId_1, userSession_1, _a) {
|
|
190
|
-
return __awaiter(this, arguments, void 0, function* (sourceInstanceId, targetInstanceId, targetInstanceApproveId, userSession, { can_edit_main_attach, can_edit_normal_attach }) {
|
|
191
|
-
const userId = userSession["userId"];
|
|
192
|
-
const spaceId = userSession["spaceId"];
|
|
193
|
-
const filesInfo = yield this.mongodbService.find(COLLECTION_NAME, {
|
|
194
|
-
"metadata.instance": sourceInstanceId,
|
|
120
|
+
await this.mongodbService.findOneAndUpdate(COLLECTION_NAME, {
|
|
121
|
+
"metadata.parent": parentId,
|
|
195
122
|
"metadata.current": true,
|
|
123
|
+
}, {
|
|
124
|
+
$unset: {
|
|
125
|
+
"metadata.current": "",
|
|
126
|
+
},
|
|
127
|
+
}, {});
|
|
128
|
+
fileRecord = await this.filesService.uploadFile(COLLECTION_NAME, file, {}, {
|
|
129
|
+
metadata: metadata,
|
|
196
130
|
});
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (can_edit_main_attach != true && can_edit_normal_attach != true)
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
if (can_edit_normal_attach != true)
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
if (fileInfo.metadata.main == true && can_edit_main_attach == true) {
|
|
216
|
-
metadata.main = true;
|
|
131
|
+
if (fileRecord) {
|
|
132
|
+
if (overwrite?.toLowerCase() === "true") {
|
|
133
|
+
await this.mongodbService.deleteMany(COLLECTION_NAME, {
|
|
134
|
+
"metadata.instance": instanceId,
|
|
135
|
+
"metadata.parent": parentId,
|
|
136
|
+
"metadata.owner": owner,
|
|
137
|
+
"metadata.approve": approve,
|
|
138
|
+
"metadata.current": {
|
|
139
|
+
$ne: true,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
217
142
|
}
|
|
218
|
-
else {
|
|
219
|
-
metadata.main = false;
|
|
220
|
-
}
|
|
221
|
-
const fileStream = yield this.filesService.downloadFileStream(COLLECTION_NAME, fileInfo._id);
|
|
222
|
-
const file = yield streamToMulterFile(fileStream, fileInfo.original.name, fileInfo.original.type);
|
|
223
|
-
yield this.uploadFile(targetInstanceId, file, metadata, userSession);
|
|
224
143
|
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
fileRecord = await this.filesService.uploadFile(COLLECTION_NAME, file, {}, {
|
|
147
|
+
metadata: metadata,
|
|
148
|
+
});
|
|
149
|
+
await this.mongodbService.findOneAndUpdateData(COLLECTION_NAME, { _id: fileRecord._id }, { "metadata.parent": fileRecord._id });
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
version_id: fileRecord._id,
|
|
153
|
+
size: file.size,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
async copyInstanceFiles(sourceInstanceId, targetInstanceId, targetInstanceApproveId, userSession, { can_edit_main_attach, can_edit_normal_attach }) {
|
|
157
|
+
const userId = userSession["userId"];
|
|
158
|
+
const spaceId = userSession["spaceId"];
|
|
159
|
+
const filesInfo = await this.mongodbService.find(COLLECTION_NAME, {
|
|
160
|
+
"metadata.instance": sourceInstanceId,
|
|
161
|
+
"metadata.current": true,
|
|
225
162
|
});
|
|
163
|
+
const metadata = {
|
|
164
|
+
owner: userId,
|
|
165
|
+
owner_name: userSession.name,
|
|
166
|
+
space: spaceId,
|
|
167
|
+
instance: targetInstanceId,
|
|
168
|
+
approve: targetInstanceApproveId,
|
|
169
|
+
current: true,
|
|
170
|
+
main: false,
|
|
171
|
+
};
|
|
172
|
+
for (const fileInfo of filesInfo) {
|
|
173
|
+
if (fileInfo.metadata.main == true) {
|
|
174
|
+
if (can_edit_main_attach != true && can_edit_normal_attach != true)
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
if (can_edit_normal_attach != true)
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (fileInfo.metadata.main == true && can_edit_main_attach == true) {
|
|
182
|
+
metadata.main = true;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
metadata.main = false;
|
|
186
|
+
}
|
|
187
|
+
const fileStream = await this.filesService.downloadFileStream(COLLECTION_NAME, fileInfo._id);
|
|
188
|
+
const file = await streamToMulterFile(fileStream, fileInfo.original.name, fileInfo.original.type);
|
|
189
|
+
await this.uploadFile(targetInstanceId, file, metadata, userSession);
|
|
190
|
+
}
|
|
226
191
|
}
|
|
227
192
|
formatFileName(originalName, uploadFrom) {
|
|
228
193
|
if (uploadFrom === "mobile") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.service.js","sourceRoot":"","sources":["../../src/workflow/file.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.service.js","sourceRoot":"","sources":["../../src/workflow/file.service.ts"],"names":[],"mappings":"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"}
|