@things-factory/reference-app 6.2.102 → 6.2.104
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-server/constants/index.js +5 -0
- package/dist-server/constants/index.js.map +1 -0
- package/dist-server/constants/type-constants.js +26 -0
- package/dist-server/constants/type-constants.js.map +1 -0
- package/dist-server/controllers/create-data-sample-mockup.js +240 -0
- package/dist-server/controllers/create-data-sample-mockup.js.map +1 -0
- package/dist-server/controllers/index.js +5 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/index.js +8 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/middlewares/index.js +8 -0
- package/dist-server/middlewares/index.js.map +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/routes.js +24 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/data-sample-mockup/data-sample-mockup-mutation.js +28 -0
- package/dist-server/service/data-sample-mockup/data-sample-mockup-mutation.js.map +1 -0
- package/dist-server/service/data-sample-mockup/data-sample-mockup-type.js +20 -0
- package/dist-server/service/data-sample-mockup/data-sample-mockup-type.js.map +1 -0
- package/dist-server/service/data-sample-mockup/index.js +7 -0
- package/dist-server/service/data-sample-mockup/index.js.map +1 -0
- package/dist-server/service/index.js +20 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/reference/index.js +8 -0
- package/dist-server/service/reference/index.js.map +1 -0
- package/dist-server/service/reference/lambda-call.js +68 -0
- package/dist-server/service/reference/lambda-call.js.map +1 -0
- package/dist-server/service/reference/reference-mutation.js +63 -0
- package/dist-server/service/reference/reference-mutation.js.map +1 -0
- package/dist-server/service/reference/reference-query.js +84 -0
- package/dist-server/service/reference/reference-query.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +34 -34
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReferenceMutation = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const GraphQLUpload_js_1 = tslib_1.__importDefault(require("graphql-upload/GraphQLUpload.js"));
|
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
|
7
|
+
const attachment_base_1 = require("@things-factory/attachment-base");
|
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
|
+
const utils_1 = require("@things-factory/utils");
|
|
10
|
+
let ReferenceMutation = class ReferenceMutation {
|
|
11
|
+
async referenceUpload(_, files, context) {
|
|
12
|
+
const { domain, user, tx } = context.state;
|
|
13
|
+
const all = Promise.all(files);
|
|
14
|
+
if ((files === null || files === void 0 ? void 0 : files.length) > 0) {
|
|
15
|
+
const attachments = files.map(attachment => {
|
|
16
|
+
return {
|
|
17
|
+
file: attachment,
|
|
18
|
+
refType: 'Reference',
|
|
19
|
+
refBy: 100,
|
|
20
|
+
category: 'Reference'
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
await (0, attachment_base_1.createAttachments)(_, { attachments }, context);
|
|
24
|
+
}
|
|
25
|
+
return 'success';
|
|
26
|
+
}
|
|
27
|
+
async referencePendingJob(_, tag, context) {
|
|
28
|
+
const { domain } = context.state;
|
|
29
|
+
for (var i = 0; i <= 100; i++) {
|
|
30
|
+
await (0, utils_1.sleep)(100);
|
|
31
|
+
(0, shell_1.publishProgress)({
|
|
32
|
+
domain,
|
|
33
|
+
tag,
|
|
34
|
+
progress: i,
|
|
35
|
+
message: `${i * 10} / 1000`
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return 'success';
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
tslib_1.__decorate([
|
|
42
|
+
(0, type_graphql_1.Mutation)(returns => String, { description: 'To reference of file upload' }),
|
|
43
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
44
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('files', () => [GraphQLUpload_js_1.default])),
|
|
45
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
46
|
+
tslib_1.__metadata("design:type", Function),
|
|
47
|
+
tslib_1.__metadata("design:paramtypes", [Object, Array, Object]),
|
|
48
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
49
|
+
], ReferenceMutation.prototype, "referenceUpload", null);
|
|
50
|
+
tslib_1.__decorate([
|
|
51
|
+
(0, type_graphql_1.Mutation)(returns => String, { description: 'To reference of pending job progress' }),
|
|
52
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
53
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('tag')),
|
|
54
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
55
|
+
tslib_1.__metadata("design:type", Function),
|
|
56
|
+
tslib_1.__metadata("design:paramtypes", [Object, String, Object]),
|
|
57
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
58
|
+
], ReferenceMutation.prototype, "referencePendingJob", null);
|
|
59
|
+
ReferenceMutation = tslib_1.__decorate([
|
|
60
|
+
(0, type_graphql_1.Resolver)()
|
|
61
|
+
], ReferenceMutation);
|
|
62
|
+
exports.ReferenceMutation = ReferenceMutation;
|
|
63
|
+
//# sourceMappingURL=reference-mutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-mutation.js","sourceRoot":"","sources":["../../../server/service/reference/reference-mutation.ts"],"names":[],"mappings":";;;;AACA,+FAA2D;AAC3D,+CAAiE;AAEjE,qEAA+E;AAC/E,iDAAuD;AACvD,iDAA6C;AAGtC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAEtB,AAAN,KAAK,CAAC,eAAe,CACX,CAAC,EAET,KAAmB,EACZ,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAE9B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC,EAAE;YACrB,MAAM,WAAW,GAAiB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACvD,OAAO;oBACL,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,WAAW;oBACpB,KAAK,EAAE,GAAG;oBACV,QAAQ,EAAE,WAAW;iBACf,CAAA;YACV,CAAC,CAAC,CAAA;YACF,MAAM,IAAA,mCAAiB,EAAC,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAA;SACrD;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAS,CAAC,EAAc,GAAW,EAAS,OAAwB;QAC3F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,IAAA,aAAK,EAAC,GAAG,CAAC,CAAA;YAEhB,IAAA,uBAAe,EAAC;gBACd,MAAM;gBACN,GAAG;gBACH,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS;aAC5B,CAAC,CAAA;SACH;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF,CAAA;AAzCO;IADL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IAEzE,mBAAA,IAAA,mBAAI,GAAE,CAAA;IACN,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,0BAAa,CAAC,CAAC,CAAA;IAEnC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;wDAkBP;AAGK;IADL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;IAC1D,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAK,mBAAA,IAAA,kBAAG,EAAC,KAAK,CAAC,CAAA;IAAe,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;4DAenE;AA1CU,iBAAiB;IAD7B,IAAA,uBAAQ,GAAE;GACE,iBAAiB,CA2C7B;AA3CY,8CAAiB","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Mutation, Resolver, Root } from 'type-graphql'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { publishProgress } from '@things-factory/shell'\nimport { sleep } from '@things-factory/utils'\n\n@Resolver()\nexport class ReferenceMutation {\n @Mutation(returns => String, { description: 'To reference of file upload' })\n async referenceUpload(\n @Root() _,\n @Arg('files', () => [GraphQLUpload])\n files: FileUpload[],\n @Ctx() context: ResolverContext\n ): Promise<string> {\n const { domain, user, tx } = context.state\n const all = Promise.all(files)\n\n if (files?.length > 0) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: 'Reference',\n refBy: 100,\n category: 'Reference'\n } as any\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return 'success'\n }\n\n @Mutation(returns => String, { description: 'To reference of pending job progress' })\n async referencePendingJob(@Root() _, @Arg('tag') tag: string, @Ctx() context: ResolverContext): Promise<string> {\n const { domain } = context.state\n\n for (var i = 0; i <= 100; i++) {\n await sleep(100)\n\n publishProgress({\n domain,\n tag,\n progress: i,\n message: `${i * 10} / 1000`\n })\n }\n\n return 'success'\n }\n}\n"]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReferenceQuery = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const GraphQLUpload_js_1 = tslib_1.__importDefault(require("graphql-upload/GraphQLUpload.js"));
|
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
|
7
|
+
const attachment_base_1 = require("@things-factory/attachment-base");
|
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
|
+
const utils_1 = require("@things-factory/utils");
|
|
10
|
+
const lambda_call_1 = require("./lambda-call");
|
|
11
|
+
let ReferenceQuery = class ReferenceQuery {
|
|
12
|
+
async ocrRequest(_, images, context) {
|
|
13
|
+
var _a;
|
|
14
|
+
const { domain, user, tx } = context.state;
|
|
15
|
+
const all = Promise.all(images);
|
|
16
|
+
if ((images === null || images === void 0 ? void 0 : images.length) > 0) {
|
|
17
|
+
const attachments = images.map(attachment => {
|
|
18
|
+
return {
|
|
19
|
+
file: attachment,
|
|
20
|
+
refType: 'Reference',
|
|
21
|
+
refBy: 100,
|
|
22
|
+
category: 'Reference'
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
await (0, attachment_base_1.createAttachments)(_, { attachments }, context);
|
|
26
|
+
const files = await Promise.all(images.map(async (file) => {
|
|
27
|
+
const { createReadStream, filename, mimetype } = await file;
|
|
28
|
+
const readStream = createReadStream();
|
|
29
|
+
const image = await this.streamToString(readStream);
|
|
30
|
+
// format is 'image/jpeg'
|
|
31
|
+
const formatArr = mimetype.split('/');
|
|
32
|
+
return { data: image, name: filename, format: formatArr[formatArr.length - 1] };
|
|
33
|
+
}));
|
|
34
|
+
const res = await (0, lambda_call_1.extractInfos)(files);
|
|
35
|
+
console.log('interpretImages response', JSON.stringify(res, null, ' '));
|
|
36
|
+
return (_a = res.data) === null || _a === void 0 ? void 0 : _a.extractInfos;
|
|
37
|
+
}
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
streamToString(stream) {
|
|
41
|
+
const chunks = [];
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
stream.on('data', chunk => chunks.push(Buffer.from(chunk)));
|
|
44
|
+
stream.on('error', err => reject(err));
|
|
45
|
+
stream.on('end', () => resolve(Buffer.concat(chunks).toString('base64')));
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async ocrPendingJob(_, tag, context) {
|
|
49
|
+
const { domain } = context.state;
|
|
50
|
+
for (var i = 0; i <= 100; i++) {
|
|
51
|
+
await (0, utils_1.sleep)(100);
|
|
52
|
+
(0, shell_1.publishProgress)({
|
|
53
|
+
domain,
|
|
54
|
+
tag,
|
|
55
|
+
progress: i,
|
|
56
|
+
message: `${i * 10} / 1000`
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return 'success';
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
tslib_1.__decorate([
|
|
63
|
+
(0, type_graphql_1.Query)(returns => [shell_1.ScalarAny], { description: 'To reference of ocr request' }),
|
|
64
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
65
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('images', () => [GraphQLUpload_js_1.default])),
|
|
66
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
67
|
+
tslib_1.__metadata("design:type", Function),
|
|
68
|
+
tslib_1.__metadata("design:paramtypes", [Object, Array, Object]),
|
|
69
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
70
|
+
], ReferenceQuery.prototype, "ocrRequest", null);
|
|
71
|
+
tslib_1.__decorate([
|
|
72
|
+
(0, type_graphql_1.Query)(returns => String, { description: 'To reference of pending job progress' }),
|
|
73
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
74
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('tag')),
|
|
75
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
76
|
+
tslib_1.__metadata("design:type", Function),
|
|
77
|
+
tslib_1.__metadata("design:paramtypes", [Object, String, Object]),
|
|
78
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
79
|
+
], ReferenceQuery.prototype, "ocrPendingJob", null);
|
|
80
|
+
ReferenceQuery = tslib_1.__decorate([
|
|
81
|
+
(0, type_graphql_1.Resolver)()
|
|
82
|
+
], ReferenceQuery);
|
|
83
|
+
exports.ReferenceQuery = ReferenceQuery;
|
|
84
|
+
//# sourceMappingURL=reference-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-query.js","sourceRoot":"","sources":["../../../server/service/reference/reference-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { GraphQLScalarType } from 'graphql'\nimport type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { publishProgress, ScalarAny } from '@things-factory/shell'\nimport { sleep } from '@things-factory/utils'\n\nimport { extractInfos } from './lambda-call'\n\n@Resolver()\nexport class ReferenceQuery {\n @Query(returns => [ScalarAny], { description: 'To reference of ocr request' })\n async ocrRequest(\n @Root() _,\n @Arg('images', () => [GraphQLUpload])\n images: FileUpload[],\n @Ctx() context: ResolverContext\n ): Promise<GraphQLScalarType[]> {\n const { domain, user, tx } = context.state\n const all = Promise.all(images)\n\n if (images?.length > 0) {\n const attachments: Attachment[] = images.map(attachment => {\n return {\n file: attachment,\n refType: 'Reference',\n refBy: 100,\n category: 'Reference'\n } as any\n })\n await createAttachments(_, { attachments }, context)\n\n const files = await Promise.all(\n images.map(async file => {\n const { createReadStream, filename, mimetype } = await file\n const readStream = createReadStream()\n const image = await this.streamToString(readStream)\n // format is 'image/jpeg'\n const formatArr = mimetype.split('/')\n return { data: image, name: filename, format: formatArr[formatArr.length - 1] }\n })\n )\n const res: any = await extractInfos(files)\n console.log('interpretImages response', JSON.stringify(res, null, ' '))\n return res.data?.extractInfos\n }\n\n return []\n }\n\n streamToString(stream) {\n const chunks = []\n return new Promise((resolve, reject) => {\n stream.on('data', chunk => chunks.push(Buffer.from(chunk)))\n stream.on('error', err => reject(err))\n stream.on('end', () => resolve(Buffer.concat(chunks).toString('base64')))\n })\n }\n\n @Query(returns => String, { description: 'To reference of pending job progress' })\n async ocrPendingJob(@Root() _, @Arg('tag') tag: string, @Ctx() context: ResolverContext): Promise<string> {\n const { domain } = context.state\n\n for (var i = 0; i <= 100; i++) {\n await sleep(100)\n\n publishProgress({\n domain,\n tag,\n progress: i,\n message: `${i * 10} / 1000`\n })\n }\n\n return 'success'\n }\n}\n"]}
|