@chilibase/backend 0.1.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.
Files changed (168) hide show
  1. package/README.md +3 -0
  2. package/lib/administration/x-browse-meta.entity.d.ts +8 -0
  3. package/lib/administration/x-browse-meta.entity.js +42 -0
  4. package/lib/administration/x-browse-meta.entity.js.map +1 -0
  5. package/lib/administration/x-column-meta.entity.d.ts +11 -0
  6. package/lib/administration/x-column-meta.entity.js +59 -0
  7. package/lib/administration/x-column-meta.entity.js.map +1 -0
  8. package/lib/administration/x-enum-enum.entity.d.ts +12 -0
  9. package/lib/administration/x-enum-enum.entity.js +59 -0
  10. package/lib/administration/x-enum-enum.entity.js.map +1 -0
  11. package/lib/administration/x-enum.entity.d.ts +10 -0
  12. package/lib/administration/x-enum.entity.js +54 -0
  13. package/lib/administration/x-enum.entity.js.map +1 -0
  14. package/lib/administration/x-file.entity.d.ts +10 -0
  15. package/lib/administration/x-file.entity.js +53 -0
  16. package/lib/administration/x-file.entity.js.map +1 -0
  17. package/lib/administration/x-param.entity.d.ts +10 -0
  18. package/lib/administration/x-param.entity.js +54 -0
  19. package/lib/administration/x-param.entity.js.map +1 -0
  20. package/lib/administration/x-user.entity.d.ts +11 -0
  21. package/lib/administration/x-user.entity.js +63 -0
  22. package/lib/administration/x-user.entity.js.map +1 -0
  23. package/lib/auth/auth.module.d.ts +2 -0
  24. package/lib/auth/auth.module.js +19 -0
  25. package/lib/auth/auth.module.js.map +1 -0
  26. package/lib/auth/jwt-auth.guard.d.ts +10 -0
  27. package/lib/auth/jwt-auth.guard.js +36 -0
  28. package/lib/auth/jwt-auth.guard.js.map +1 -0
  29. package/lib/auth/jwt.strategy.d.ts +9 -0
  30. package/lib/auth/jwt.strategy.js +60 -0
  31. package/lib/auth/jwt.strategy.js.map +1 -0
  32. package/lib/auth/public.d.ts +2 -0
  33. package/lib/auth/public.js +4 -0
  34. package/lib/auth/public.js.map +1 -0
  35. package/lib/serverApi/ExportImportParam.d.ts +70 -0
  36. package/lib/serverApi/ExportImportParam.js +33 -0
  37. package/lib/serverApi/ExportImportParam.js.map +1 -0
  38. package/lib/serverApi/FindParam.d.ts +59 -0
  39. package/lib/serverApi/FindParam.js +20 -0
  40. package/lib/serverApi/FindParam.js.map +1 -0
  41. package/lib/serverApi/FindResult.d.ts +8 -0
  42. package/lib/serverApi/FindResult.js +2 -0
  43. package/lib/serverApi/FindResult.js.map +1 -0
  44. package/lib/serverApi/PrimeFilterSortMeta.d.ts +43 -0
  45. package/lib/serverApi/PrimeFilterSortMeta.js +32 -0
  46. package/lib/serverApi/PrimeFilterSortMeta.js.map +1 -0
  47. package/lib/serverApi/XBrowseMetadata.d.ts +4 -0
  48. package/lib/serverApi/XBrowseMetadata.js +2 -0
  49. package/lib/serverApi/XBrowseMetadata.js.map +1 -0
  50. package/lib/serverApi/XEntityMetadata.d.ts +35 -0
  51. package/lib/serverApi/XEntityMetadata.js +2 -0
  52. package/lib/serverApi/XEntityMetadata.js.map +1 -0
  53. package/lib/serverApi/XFileJsonField.d.ts +6 -0
  54. package/lib/serverApi/XFileJsonField.js +2 -0
  55. package/lib/serverApi/XFileJsonField.js.map +1 -0
  56. package/lib/serverApi/XPostLoginIfc.d.ts +7 -0
  57. package/lib/serverApi/XPostLoginIfc.js +2 -0
  58. package/lib/serverApi/XPostLoginIfc.js.map +1 -0
  59. package/lib/serverApi/XUser.d.ts +8 -0
  60. package/lib/serverApi/XUser.js +2 -0
  61. package/lib/serverApi/XUser.js.map +1 -0
  62. package/lib/serverApi/XUserAuthenticationIfc.d.ts +9 -0
  63. package/lib/serverApi/XUserAuthenticationIfc.js +2 -0
  64. package/lib/serverApi/XUserAuthenticationIfc.js.map +1 -0
  65. package/lib/serverApi/XUtilsCommon.d.ts +48 -0
  66. package/lib/serverApi/XUtilsCommon.js +409 -0
  67. package/lib/serverApi/XUtilsCommon.js.map +1 -0
  68. package/lib/serverApi/XUtilsConversions.d.ts +37 -0
  69. package/lib/serverApi/XUtilsConversions.js +386 -0
  70. package/lib/serverApi/XUtilsConversions.js.map +1 -0
  71. package/lib/serverApi/XUtilsMetadataCommon.d.ts +29 -0
  72. package/lib/serverApi/XUtilsMetadataCommon.js +170 -0
  73. package/lib/serverApi/XUtilsMetadataCommon.js.map +1 -0
  74. package/lib/serverApi/index.d.ts +2 -0
  75. package/lib/serverApi/index.js +3 -0
  76. package/lib/serverApi/index.js.map +1 -0
  77. package/lib/serverApi/x-lib-api.d.ts +12 -0
  78. package/lib/serverApi/x-lib-api.js +2 -0
  79. package/lib/serverApi/x-lib-api.js.map +1 -0
  80. package/lib/services/FindParamRows.d.ts +8 -0
  81. package/lib/services/FindParamRows.js +2 -0
  82. package/lib/services/FindParamRows.js.map +1 -0
  83. package/lib/services/FindParamRowsForAssoc.d.ts +6 -0
  84. package/lib/services/FindParamRowsForAssoc.js +2 -0
  85. package/lib/services/FindParamRowsForAssoc.js.map +1 -0
  86. package/lib/services/FindRowByIdParam.d.ts +5 -0
  87. package/lib/services/FindRowByIdParam.js +2 -0
  88. package/lib/services/FindRowByIdParam.js.map +1 -0
  89. package/lib/services/GetAssocNameParam.d.ts +4 -0
  90. package/lib/services/GetAssocNameParam.js +2 -0
  91. package/lib/services/GetAssocNameParam.js.map +1 -0
  92. package/lib/services/RemoveRowParam.d.ts +5 -0
  93. package/lib/services/RemoveRowParam.js +2 -0
  94. package/lib/services/RemoveRowParam.js.map +1 -0
  95. package/lib/services/SaveRowParam.d.ts +5 -0
  96. package/lib/services/SaveRowParam.js +2 -0
  97. package/lib/services/SaveRowParam.js.map +1 -0
  98. package/lib/services/XAdvancedConsoleLogger.d.ts +4 -0
  99. package/lib/services/XAdvancedConsoleLogger.js +25 -0
  100. package/lib/services/XAdvancedConsoleLogger.js.map +1 -0
  101. package/lib/services/XAppError.d.ts +3 -0
  102. package/lib/services/XAppError.js +8 -0
  103. package/lib/services/XAppError.js.map +1 -0
  104. package/lib/services/XEnvVars.d.ts +23 -0
  105. package/lib/services/XEnvVars.js +27 -0
  106. package/lib/services/XEnvVars.js.map +1 -0
  107. package/lib/services/XOptimisticLockingSubscriber.d.ts +4 -0
  108. package/lib/services/XOptimisticLockingSubscriber.js +23 -0
  109. package/lib/services/XOptimisticLockingSubscriber.js.map +1 -0
  110. package/lib/services/XRowIdListToRemove.d.ts +10 -0
  111. package/lib/services/XRowIdListToRemove.js +26 -0
  112. package/lib/services/XRowIdListToRemove.js.map +1 -0
  113. package/lib/services/XUtils.d.ts +16 -0
  114. package/lib/services/XUtils.js +58 -0
  115. package/lib/services/XUtils.js.map +1 -0
  116. package/lib/services/index.d.ts +4 -0
  117. package/lib/services/index.js +5 -0
  118. package/lib/services/index.js.map +1 -0
  119. package/lib/services/x-browse-form-metadata.service.d.ts +7 -0
  120. package/lib/services/x-browse-form-metadata.service.js +40 -0
  121. package/lib/services/x-browse-form-metadata.service.js.map +1 -0
  122. package/lib/services/x-entity-metadata.service.d.ts +15 -0
  123. package/lib/services/x-entity-metadata.service.js +127 -0
  124. package/lib/services/x-entity-metadata.service.js.map +1 -0
  125. package/lib/services/x-exception.filter.d.ts +4 -0
  126. package/lib/services/x-exception.filter.js +64 -0
  127. package/lib/services/x-exception.filter.js.map +1 -0
  128. package/lib/services/x-export-csv.service.d.ts +24 -0
  129. package/lib/services/x-export-csv.service.js +155 -0
  130. package/lib/services/x-export-csv.service.js.map +1 -0
  131. package/lib/services/x-export-excel.service.d.ts +12 -0
  132. package/lib/services/x-export-excel.service.js +68 -0
  133. package/lib/services/x-export-excel.service.js.map +1 -0
  134. package/lib/services/x-export-json.service.d.ts +7 -0
  135. package/lib/services/x-export-json.service.js +45 -0
  136. package/lib/services/x-export-json.service.js.map +1 -0
  137. package/lib/services/x-export.service.d.ts +14 -0
  138. package/lib/services/x-export.service.js +90 -0
  139. package/lib/services/x-export.service.js.map +1 -0
  140. package/lib/services/x-file.controller.d.ts +13 -0
  141. package/lib/services/x-file.controller.js +111 -0
  142. package/lib/services/x-file.controller.js.map +1 -0
  143. package/lib/services/x-file.service.d.ts +8 -0
  144. package/lib/services/x-file.service.js +41 -0
  145. package/lib/services/x-file.service.js.map +1 -0
  146. package/lib/services/x-lazy-data-table.service.d.ts +33 -0
  147. package/lib/services/x-lazy-data-table.service.js +227 -0
  148. package/lib/services/x-lazy-data-table.service.js.map +1 -0
  149. package/lib/services/x-lib.controller.d.ts +45 -0
  150. package/lib/services/x-lib.controller.js +205 -0
  151. package/lib/services/x-lib.controller.js.map +1 -0
  152. package/lib/services/x-lib.module.d.ts +4 -0
  153. package/lib/services/x-lib.module.js +51 -0
  154. package/lib/services/x-lib.module.js.map +1 -0
  155. package/lib/services/x-lib.service.d.ts +33 -0
  156. package/lib/services/x-lib.service.js +264 -0
  157. package/lib/services/x-lib.service.js.map +1 -0
  158. package/lib/tsconfig.tsbuildinfo +1 -0
  159. package/lib/x-query-data/XMainQueryData.d.ts +27 -0
  160. package/lib/x-query-data/XMainQueryData.js +172 -0
  161. package/lib/x-query-data/XMainQueryData.js.map +1 -0
  162. package/lib/x-query-data/XQueryData.d.ts +33 -0
  163. package/lib/x-query-data/XQueryData.js +242 -0
  164. package/lib/x-query-data/XQueryData.js.map +1 -0
  165. package/lib/x-query-data/XSubQueryData.d.ts +11 -0
  166. package/lib/x-query-data/XSubQueryData.js +52 -0
  167. package/lib/x-query-data/XSubQueryData.js.map +1 -0
  168. package/package.json +100 -0
@@ -0,0 +1,64 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Catch, HttpStatus, HttpException } from '@nestjs/common';
8
+ import { QueryFailedError } from "typeorm";
9
+ import { XAppError } from "./XAppError.js";
10
+ let XExceptionFilter = class XExceptionFilter {
11
+ catch(exception, host) {
12
+ const ctx = host.switchToHttp();
13
+ const response = ctx.getResponse();
14
+ const request = ctx.getRequest();
15
+ let status;
16
+ let responseBody;
17
+ if (exception instanceof HttpException) {
18
+ status = exception.getStatus();
19
+ responseBody = {
20
+ statusCode: status,
21
+ message: exception.message,
22
+ exceptionName: exception.name
23
+ };
24
+ }
25
+ else if (exception instanceof QueryFailedError) {
26
+ status = HttpStatus.INTERNAL_SERVER_ERROR;
27
+ responseBody = {
28
+ statusCode: status,
29
+ message: exception.message,
30
+ exceptionName: exception.name,
31
+ sqlMessage: exception.sqlMessage,
32
+ sql: exception.sql
33
+ };
34
+ }
35
+ else if (exception instanceof Error) {
36
+ status = HttpStatus.INTERNAL_SERVER_ERROR;
37
+ responseBody = {
38
+ statusCode: status,
39
+ message: exception.message,
40
+ exceptionName: exception.name
41
+ };
42
+ if (!(exception instanceof XAppError)) {
43
+ console.log(exception.stack);
44
+ }
45
+ }
46
+ else {
47
+ status = HttpStatus.INTERNAL_SERVER_ERROR;
48
+ responseBody = {
49
+ statusCode: status,
50
+ message: exception,
51
+ exceptionName: "Unknown exception (string/number)"
52
+ };
53
+ }
54
+ console.log("XExceptionFilter responseBody = " + JSON.stringify(responseBody));
55
+ response
56
+ .status(status)
57
+ .json(responseBody);
58
+ }
59
+ };
60
+ XExceptionFilter = __decorate([
61
+ Catch()
62
+ ], XExceptionFilter);
63
+ export { XExceptionFilter };
64
+ //# sourceMappingURL=x-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-exception.filter.js","sourceRoot":"","sources":["../../src/services/x-exception.filter.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAkB,KAAK,EAAiB,UAAU,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAEhG,OAAO,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AACzC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGlC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACzB,KAAK,CAAC,SAAkB,EAAE,IAAmB;QAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAW,CAAC;QAE1C,IAAI,MAAM,CAAC;QACX,IAAI,YAAY,CAAC;QACjB,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;YAErC,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,IAAI;aAChC,CAAC;QACN,CAAC;aACI,IAAI,SAAS,YAAY,gBAAgB,EAAE,CAAC;YAE7C,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC1C,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,UAAU,EAAG,SAAiB,CAAC,UAAU;gBACzC,GAAG,EAAG,SAAiB,CAAC,GAAG;aAC9B,CAAC;QACN,CAAC;aACI,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;YAGlC,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC1C,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,IAAI;aAEhC,CAAC;YAEF,IAAI,CAAC,CAAC,SAAS,YAAY,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;aACI,CAAC;YAEF,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC1C,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS;gBAClB,aAAa,EAAE,mCAAmC;aACrD,CAAC;QACN,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/E,QAAQ;aACH,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAA;AA5DY,gBAAgB;IAD5B,KAAK,EAAE;GACK,gBAAgB,CA4D5B"}
@@ -0,0 +1,24 @@
1
+ import { Response } from "express";
2
+ import { CsvEncoding, CsvParam, ExportCsvParam, XMultilineExportType } from "../serverApi/ExportImportParam.js";
3
+ import { XExportColumn, XExportService } from "./x-export.service.js";
4
+ import { SelectQueryBuilder } from "typeorm";
5
+ export declare class XCsvWriter {
6
+ csvParam: CsvParam;
7
+ res: Response;
8
+ constructor(csvParam: CsvParam, res: Response);
9
+ writeRow(...valueList: any): void;
10
+ end(): void;
11
+ private convertToStr;
12
+ private processCsvItem;
13
+ number(value: any): string;
14
+ numberAsCsv(value: number | null): string;
15
+ }
16
+ export declare class XExportCsvService extends XExportService {
17
+ export(csvParam: CsvParam, columns: XExportColumn[], entity: string | undefined, rows: any[], res: Response): void;
18
+ exportBase(csvParam: CsvParam, columns: XExportColumn[], createHeaders: boolean, multilineExportType: XMultilineExportType, fieldsToDuplicateValues: string[] | undefined, entity: string | undefined, rows: any[], res: Response): void;
19
+ exportUsingList(exportCsvParam: ExportCsvParam, columns: XExportColumn[], selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
20
+ exportUsingStream(exportCsvParam: ExportCsvParam, columns: XExportColumn[], selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
21
+ startExport(csvParam: CsvParam, columns: XExportColumn[], createHeaders: boolean, res: Response): XCsvWriter;
22
+ static getHeaderCharset(csvEncoding: CsvEncoding): string;
23
+ private exportRowToCsv;
24
+ }
@@ -0,0 +1,155 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var XExportCsvService_1;
8
+ import { HttpStatus, Injectable } from "@nestjs/common";
9
+ import { CsvDecimalFormat, CsvEncoding, XMultilineExportType } from "../serverApi/ExportImportParam.js";
10
+ import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
11
+ import { dateFormat, datetimeFormat, numberFromModel } from "../serverApi/XUtilsConversions.js";
12
+ import * as iconv from "iconv-lite";
13
+ import { XExportService } from "./x-export.service.js";
14
+ import { XUtilsMetadataCommon } from "../serverApi/XUtilsMetadataCommon.js";
15
+ export class XCsvWriter {
16
+ csvParam;
17
+ res;
18
+ constructor(csvParam, res) {
19
+ this.csvParam = csvParam;
20
+ this.res = res;
21
+ }
22
+ writeRow(...valueList) {
23
+ let csvRow = "";
24
+ let firstItem = true;
25
+ for (const value of valueList) {
26
+ let valueStr = this.convertToStr(value);
27
+ valueStr = this.processCsvItem(valueStr);
28
+ if (firstItem) {
29
+ firstItem = false;
30
+ }
31
+ else {
32
+ csvRow += this.csvParam.csvSeparator;
33
+ }
34
+ csvRow += valueStr;
35
+ }
36
+ csvRow += XUtilsCommon.newLine;
37
+ this.res.write(iconv.encode(csvRow, this.csvParam.csvEncoding));
38
+ }
39
+ end() {
40
+ this.res.status(HttpStatus.OK);
41
+ this.res.end();
42
+ }
43
+ convertToStr(value) {
44
+ let valueStr;
45
+ if (value === null || value === undefined) {
46
+ valueStr = "";
47
+ }
48
+ else if (typeof value === 'number') {
49
+ valueStr = this.numberAsCsv(value);
50
+ }
51
+ else if (value instanceof Date) {
52
+ if (value.getUTCHours() === 0 && value.getUTCMinutes() === 0 && value.getUTCSeconds() === 0) {
53
+ valueStr = dateFormat(value, 'yyyy-MM-dd');
54
+ }
55
+ else {
56
+ valueStr = datetimeFormat(value, 'yyyy-MM-dd HH:mm:ss');
57
+ }
58
+ }
59
+ else {
60
+ valueStr = value.toString();
61
+ }
62
+ return valueStr;
63
+ }
64
+ processCsvItem(valueStr) {
65
+ if (valueStr === "ID") {
66
+ valueStr = '"' + valueStr + '"';
67
+ }
68
+ else {
69
+ valueStr = valueStr.replace(/"/g, '""');
70
+ if (valueStr.search(new RegExp(`("|${this.csvParam.csvSeparator}|\n)`, 'g')) >= 0) {
71
+ valueStr = '"' + valueStr + '"';
72
+ }
73
+ }
74
+ return valueStr;
75
+ }
76
+ number(value) {
77
+ const numberValue = numberFromModel(value);
78
+ return this.numberAsCsv(numberValue);
79
+ }
80
+ numberAsCsv(value) {
81
+ let valueStr = "";
82
+ if (value !== null) {
83
+ valueStr = value.toString();
84
+ if (this.csvParam.csvDecimalFormat === CsvDecimalFormat.Comma) {
85
+ valueStr = valueStr.replace('.', ',');
86
+ }
87
+ }
88
+ return valueStr;
89
+ }
90
+ }
91
+ let XExportCsvService = XExportCsvService_1 = class XExportCsvService extends XExportService {
92
+ export(csvParam, columns, entity, rows, res) {
93
+ this.exportBase(csvParam, columns, true, XMultilineExportType.Multiline, undefined, entity, rows, res);
94
+ }
95
+ exportBase(csvParam, columns, createHeaders, multilineExportType, fieldsToDuplicateValues, entity, rows, res) {
96
+ const xCsvWriter = this.startExport(csvParam, columns, createHeaders, res);
97
+ const xEntity = entity ? XUtilsMetadataCommon.getXEntity(entity) : undefined;
98
+ for (const row of rows) {
99
+ this.exportRowToCsv(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row, xCsvWriter);
100
+ }
101
+ xCsvWriter.end();
102
+ }
103
+ async exportUsingList(exportCsvParam, columns, selectQueryBuilder, res) {
104
+ const rowList = await selectQueryBuilder.getMany();
105
+ const excelCsvParam = exportCsvParam.excelCsvParam;
106
+ this.exportBase(exportCsvParam.csvParam, columns, excelCsvParam.headers !== undefined, excelCsvParam.toManyAssocExport, excelCsvParam.fieldsToDuplicateValues, exportCsvParam.queryParam.entity, rowList, res);
107
+ }
108
+ async exportUsingStream(exportCsvParam, columns, selectQueryBuilder, res) {
109
+ const xCsvWriter = this.startExport(exportCsvParam.csvParam, columns, exportCsvParam.excelCsvParam.headers !== undefined, res);
110
+ const readStream = await selectQueryBuilder.stream();
111
+ const xEntity = XUtilsMetadataCommon.getXEntity(exportCsvParam.queryParam.entity);
112
+ readStream.on('data', data => {
113
+ const entityObj = this.transformToEntity(data, selectQueryBuilder);
114
+ this.exportRowToCsv(columns, exportCsvParam.excelCsvParam.toManyAssocExport, exportCsvParam.excelCsvParam.fieldsToDuplicateValues, xEntity, entityObj, xCsvWriter);
115
+ });
116
+ readStream.on('end', () => {
117
+ xCsvWriter.end();
118
+ });
119
+ }
120
+ startExport(csvParam, columns, createHeaders, res) {
121
+ const headerCharset = XExportCsvService_1.getHeaderCharset(csvParam.csvEncoding);
122
+ res.setHeader("Content-Type", `text/csv; charset=${headerCharset}`);
123
+ res.charset = headerCharset;
124
+ const xCsvWriter = new XCsvWriter(csvParam, res);
125
+ if (createHeaders) {
126
+ xCsvWriter.writeRow(...columns.map((value) => value.header));
127
+ }
128
+ return xCsvWriter;
129
+ }
130
+ static getHeaderCharset(csvEncoding) {
131
+ let headerCharset;
132
+ switch (csvEncoding) {
133
+ case CsvEncoding.Utf8:
134
+ headerCharset = "UTF-8";
135
+ break;
136
+ case CsvEncoding.Win1250:
137
+ headerCharset = "windows-1250";
138
+ break;
139
+ default:
140
+ throw `HeaderCharset for csvEncoding "${csvEncoding}" not implemented`;
141
+ }
142
+ return headerCharset;
143
+ }
144
+ exportRowToCsv(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row, xCsvWriter) {
145
+ const resultRowList = this.exportRow(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row);
146
+ for (const resultRow of resultRowList) {
147
+ xCsvWriter.writeRow(...resultRow);
148
+ }
149
+ }
150
+ };
151
+ XExportCsvService = XExportCsvService_1 = __decorate([
152
+ Injectable()
153
+ ], XExportCsvService);
154
+ export { XExportCsvService };
155
+ //# sourceMappingURL=x-export-csv.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-export-csv.service.js","sourceRoot":"","sources":["../../src/services/x-export-csv.service.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EACH,gBAAgB,EAChB,WAAW,EAGX,oBAAoB,EACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAE9F,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAgB,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAIpE,OAAO,EAAC,oBAAoB,EAAC,MAAM,sCAAsC,CAAC;AAG1E,MAAM,OAAO,UAAU;IAEnB,QAAQ,CAAW;IACnB,GAAG,CAAW;IAEd,YAAY,QAAkB,EAAE,GAAa;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,GAAG,SAAc;QACtB,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,SAAS,GAAY,IAAI,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAE5B,IAAI,QAAQ,GAAW,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAChD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEzC,IAAI,SAAS,EAAE,CAAC;gBACZ,SAAS,GAAG,KAAK,CAAC;YACtB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzC,CAAC;YACD,MAAM,IAAI,QAAQ,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACpE,CAAC;IAGD,GAAG;QACC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAIO,YAAY,CAAC,KAAU;QAE3B,IAAI,QAAgB,CAAC;QACrB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,QAAQ,GAAG,EAAE,CAAC;QAClB,CAAC;aACI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;aACI,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAE7B,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC1F,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC/C,CAAC;iBACI,CAAC;gBAEF,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;aACI,CAAC;YACF,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,cAAc,CAAC,QAAgB;QAEnC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;QACpC,CAAC;aACI,CAAC;YACF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAExC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChF,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;YACpC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,KAAU;QACb,MAAM,WAAW,GAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAGD,WAAW,CAAC,KAAoB;QAC5B,IAAI,QAAQ,GAAW,EAAE,CAAC;QAE1B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAEjB,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC5D,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC;QAEL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAGM,IAAM,iBAAiB,yBAAvB,MAAM,iBAAkB,SAAQ,cAAc;IAGjD,MAAM,CAAC,QAAkB,EAAE,OAAwB,EAAE,MAA0B,EAAE,IAAW,EAAE,GAAa;QACvG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3G,CAAC;IAKD,UAAU,CAAC,QAAkB,EAAE,OAAwB,EAAE,aAAsB,EAAE,mBAAyC,EAAE,uBAA6C,EAAE,MAA0B,EAAE,IAAW,EAAE,GAAa;QAE7N,MAAM,UAAU,GAAe,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;QAEvF,MAAM,OAAO,GAAwB,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACzG,CAAC;QAED,UAAU,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAA8B,EAAE,OAAwB,EAAE,kBAA+C,EAAE,GAAa;QAE1I,MAAM,OAAO,GAAU,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAE1D,MAAM,aAAa,GAAkB,cAAc,CAAC,aAAa,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,aAAa,CAAC,iBAAiB,EAAE,aAAa,CAAC,uBAAuB,EAAE,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACnN,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,cAA8B,EAAE,OAAwB,EAAE,kBAA+C,EAAE,GAAa;QAE5I,MAAM,UAAU,GAAe,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,GAAG,CAAC,CAAC;QAE3I,MAAM,UAAU,GAAe,MAAM,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAEjE,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAElF,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YACnE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,CAAC,aAAa,CAAC,uBAAuB,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACvK,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACtB,UAAU,CAAC,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,QAAkB,EAAE,OAAwB,EAAE,aAAsB,EAAE,GAAa;QAE3F,MAAM,aAAa,GAAW,mBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEvF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,qBAAqB,aAAa,EAAE,CAAC,CAAC;QACpE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC;QAG5B,MAAM,UAAU,GAAe,IAAI,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE7D,IAAI,aAAa,EAAE,CAAC;YAChB,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;QAMD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,WAAwB;QAC5C,IAAI,aAAqB,CAAC;QAC1B,QAAQ,WAAW,EAAE,CAAC;YAClB,KAAK,WAAW,CAAC,IAAI;gBACjB,aAAa,GAAG,OAAO,CAAC;gBACxB,MAAM;YACV,KAAK,WAAW,CAAC,OAAO;gBACpB,aAAa,GAAG,cAAc,CAAC;gBAC/B,MAAM;YACV;gBACI,MAAM,kCAAkC,WAAW,mBAAmB,CAAC;QAC/E,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAGO,cAAc,CAAC,OAAwB,EAAE,mBAAyC,EAAE,uBAAiC,EAAE,OAAgB,EAAE,GAAQ,EAAE,UAAsB;QAE7K,MAAM,aAAa,GAAsB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7H,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;YACpC,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;CACJ,CAAA;AA7FY,iBAAiB;IAD7B,UAAU,EAAE;GACA,iBAAiB,CA6F7B"}
@@ -0,0 +1,12 @@
1
+ import { StreamableFile } from "@nestjs/common";
2
+ import { XExportColumn, XExportService } from "./x-export.service.js";
3
+ import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
4
+ import * as ExcelJS from "exceljs";
5
+ export declare class XExportExcelService extends XExportService {
6
+ export(worksheetName: string, columns: XExportColumn[], entity: string | undefined, rows: any[]): Promise<StreamableFile>;
7
+ exportBase(worksheetName: string, columns: XExportColumn[], createHeaders: boolean, multilineExportType: XMultilineExportType, fieldsToDuplicateValues: string[] | undefined, entity: string | undefined, rows: any[]): Promise<StreamableFile>;
8
+ createWorksheet(workbook: ExcelJS.Workbook, worksheetName: string, createFrozenRow?: boolean): ExcelJS.Worksheet;
9
+ highlightHeaderRow(worksheet: ExcelJS.Worksheet): void;
10
+ createStreamableFile(workbook: ExcelJS.Workbook): Promise<StreamableFile>;
11
+ private computeWidth;
12
+ }
@@ -0,0 +1,68 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Injectable, StreamableFile } from "@nestjs/common";
8
+ import { XExportService } from "./x-export.service.js";
9
+ import { Readable } from "stream";
10
+ import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
11
+ import { XUtilsMetadataCommon } from "../serverApi/XUtilsMetadataCommon.js";
12
+ import * as ExcelJS from "exceljs";
13
+ let XExportExcelService = class XExportExcelService extends XExportService {
14
+ export(worksheetName, columns, entity, rows) {
15
+ return this.exportBase(worksheetName, columns, true, XMultilineExportType.Singleline, undefined, entity, rows);
16
+ }
17
+ exportBase(worksheetName, columns, createHeaders, multilineExportType, fieldsToDuplicateValues, entity, rows) {
18
+ const workbook = new ExcelJS.Workbook();
19
+ const worksheet = this.createWorksheet(workbook, worksheetName, createHeaders);
20
+ if (createHeaders) {
21
+ worksheet.columns = columns.map((value) => { return { header: value.header, width: value.width ?? this.computeWidth(value.header) }; });
22
+ }
23
+ const xEntity = entity ? XUtilsMetadataCommon.getXEntity(entity) : undefined;
24
+ for (const row of rows) {
25
+ const resultRowList = this.exportRow(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row);
26
+ for (const resultRow of resultRowList) {
27
+ worksheet.addRow(resultRow);
28
+ }
29
+ }
30
+ if (createHeaders) {
31
+ this.highlightHeaderRow(worksheet);
32
+ }
33
+ return this.createStreamableFile(workbook);
34
+ }
35
+ createWorksheet(workbook, worksheetName, createFrozenRow) {
36
+ createFrozenRow = createFrozenRow ?? true;
37
+ return workbook.addWorksheet(worksheetName, createFrozenRow ? {
38
+ views: [{ state: "frozen", ySplit: 1 }]
39
+ } : undefined);
40
+ }
41
+ highlightHeaderRow(worksheet) {
42
+ const headerRow = worksheet.getRow(1);
43
+ headerRow.eachCell((cell, colNumber) => {
44
+ cell.font = { bold: true };
45
+ cell.fill = {
46
+ type: 'pattern',
47
+ pattern: 'solid',
48
+ fgColor: { argb: 'FFCCECFF' }
49
+ };
50
+ });
51
+ }
52
+ async createStreamableFile(workbook) {
53
+ const buffer = await workbook.xlsx.writeBuffer();
54
+ return new StreamableFile(Readable.from(buffer));
55
+ }
56
+ computeWidth(header) {
57
+ let width = undefined;
58
+ if (header.length > 0) {
59
+ width = header.length * 1 + 1;
60
+ }
61
+ return width;
62
+ }
63
+ };
64
+ XExportExcelService = __decorate([
65
+ Injectable()
66
+ ], XExportExcelService);
67
+ export { XExportExcelService };
68
+ //# sourceMappingURL=x-export-excel.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-export-excel.service.js","sourceRoot":"","sources":["../../src/services/x-export-excel.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAgB,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAG5B,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,cAAc;IAGnD,MAAM,CAAC,aAAqB,EAAE,OAAwB,EAAE,MAA0B,EAAE,IAAW;QAC3F,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnH,CAAC;IAGD,UAAU,CAAC,aAAqB,EAAE,OAAwB,EAAE,aAAsB,EAAE,mBAAyC,EAAE,uBAA6C,EAAE,MAA0B,EAAE,IAAW;QAEjN,MAAM,QAAQ,GAAqB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAsB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAElG,IAAI,aAAa,EAAE,CAAC;YAChB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAoB,EAAE,EAAE,GAAE,OAAO,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QACvJ,CAAC;QAED,MAAM,OAAO,GAAwB,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAErB,MAAM,aAAa,GAAsB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7H,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;gBACpC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAGD,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe,CAAC,QAA0B,EAAE,aAAqB,EAAE,eAAyB;QACxF,eAAe,GAAG,eAAe,IAAI,IAAI,CAAC;QAC1C,OAAO,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;YAC1D,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAED,kBAAkB,CAAC,SAA4B;QAC3C,MAAM,SAAS,GAAgB,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEnD,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAkB,EAAE,SAAiB,EAAE,EAAE;YACzD,IAAI,CAAC,IAAI,GAAG,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG;gBACR,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;aAC9B,CAAA;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAA0B;QAEjD,MAAM,MAAM,GAAW,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAuB,CAAC;QAG9E,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,YAAY,CAAC,MAAc;QAC/B,IAAI,KAAK,GAAuB,SAAS,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ,CAAA;AAtEY,mBAAmB;IAD/B,UAAU,EAAE;GACA,mBAAmB,CAsE/B"}
@@ -0,0 +1,7 @@
1
+ import { XExportService } from "./x-export.service.js";
2
+ import { SelectQueryBuilder } from "typeorm";
3
+ import { Response } from "express";
4
+ export declare class XExportJsonService extends XExportService {
5
+ exportJsonUsingList(selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
6
+ exportJsonUsingStream(selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
7
+ }
@@ -0,0 +1,45 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { HttpStatus, Injectable } from "@nestjs/common";
8
+ import { XExportService } from "./x-export.service.js";
9
+ import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
10
+ let XExportJsonService = class XExportJsonService extends XExportService {
11
+ async exportJsonUsingList(selectQueryBuilder, res) {
12
+ const rowList = await selectQueryBuilder.getMany();
13
+ res.write(XUtilsCommon.objectAsJSON(rowList), "utf8");
14
+ res.status(HttpStatus.OK);
15
+ res.end();
16
+ }
17
+ async exportJsonUsingStream(selectQueryBuilder, res) {
18
+ const readStream = await selectQueryBuilder.stream();
19
+ res.write("[", "utf8");
20
+ let firstRow = true;
21
+ readStream.on('data', data => {
22
+ const entityObj = this.transformToEntity(data, selectQueryBuilder);
23
+ let rowStr = "";
24
+ if (firstRow) {
25
+ firstRow = false;
26
+ }
27
+ else {
28
+ rowStr += ",";
29
+ }
30
+ rowStr += XUtilsCommon.newLine;
31
+ rowStr += XUtilsCommon.objectAsJSON(entityObj);
32
+ res.write(rowStr, "utf8");
33
+ });
34
+ readStream.on('end', () => {
35
+ res.write(XUtilsCommon.newLine + "]", "utf8");
36
+ res.status(HttpStatus.OK);
37
+ res.end();
38
+ });
39
+ }
40
+ };
41
+ XExportJsonService = __decorate([
42
+ Injectable()
43
+ ], XExportJsonService);
44
+ export { XExportJsonService };
45
+ //# sourceMappingURL=x-export-json.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-export-json.service.js","sourceRoot":"","sources":["../../src/services/x-export-json.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,cAAc;IAElD,KAAK,CAAC,mBAAmB,CAAC,kBAA+C,EAAE,GAAa;QAEpF,MAAM,OAAO,GAAU,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAE1D,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,kBAA+C,EAAE,GAAa;QAEtF,MAAM,UAAU,GAAe,MAAM,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAEjE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YACnE,IAAI,MAAM,GAAW,EAAE,CAAC;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACX,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC;YAC/B,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACtB,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9C,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1B,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAxCY,kBAAkB;IAD9B,UAAU,EAAE;GACA,kBAAkB,CAwC9B"}
@@ -0,0 +1,14 @@
1
+ import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
2
+ import { XEntity } from "../serverApi/XEntityMetadata.js";
3
+ import { SelectQueryBuilder } from "typeorm";
4
+ export type XFieldType = "string" | "decimal" | "date" | "datetime" | "interval" | "boolean";
5
+ export interface XExportColumn {
6
+ header: string;
7
+ field: string | ((row: any) => any);
8
+ type?: XFieldType;
9
+ width?: number;
10
+ }
11
+ export declare abstract class XExportService {
12
+ exportRow(columns: XExportColumn[], multilineExportType: XMultilineExportType, fieldsToDuplicateValues: string[] | undefined, xEntity: XEntity | undefined, row: any): Array<Array<any>>;
13
+ protected transformToEntity(data: any, selectQueryBuilder: SelectQueryBuilder<unknown>): any;
14
+ }
@@ -0,0 +1,90 @@
1
+ import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
2
+ import { XUtilsMetadataCommon } from "../serverApi/XUtilsMetadataCommon.js";
3
+ import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
4
+ import { AsUIType, convertValueBase } from "../serverApi/XUtilsConversions.js";
5
+ import { RawSqlResultsToEntityTransformer } from "typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js";
6
+ export class XExportService {
7
+ exportRow(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row) {
8
+ const columnList = new Array(columns.length);
9
+ let maxColumnLength = 1;
10
+ for (const [columnIndex, xExportColumn] of columns.entries()) {
11
+ let fieldType = xExportColumn.type;
12
+ let scale = undefined;
13
+ let value;
14
+ if (typeof xExportColumn.field === 'function') {
15
+ value = xExportColumn.field(row);
16
+ }
17
+ else {
18
+ if (!fieldType) {
19
+ if (xEntity) {
20
+ const xField = XUtilsMetadataCommon.getXFieldByPathBase(xEntity, xExportColumn.field);
21
+ if (xField) {
22
+ fieldType = xField.type;
23
+ scale = xField.scale;
24
+ }
25
+ }
26
+ }
27
+ value = XUtilsCommon.getValueOrValueListByPath(row, xExportColumn.field);
28
+ }
29
+ let columnValues;
30
+ let columnValuesProcessed = false;
31
+ if (Array.isArray(value)) {
32
+ columnValues = value;
33
+ if (multilineExportType === XMultilineExportType.Singleline) {
34
+ if (fieldType) {
35
+ columnValues = columnValues.map((value) => convertValueBase(fieldType, scale, value, true, AsUIType.Text));
36
+ }
37
+ else {
38
+ columnValues = columnValues.map((value) => (value !== null && value !== undefined) ? value.toString() : "");
39
+ }
40
+ columnValues = [columnValues.join(", ")];
41
+ columnValuesProcessed = true;
42
+ }
43
+ }
44
+ else {
45
+ columnValues = [value];
46
+ }
47
+ if (!columnValuesProcessed) {
48
+ if (fieldType) {
49
+ columnValues = columnValues.map((value) => convertValueBase(fieldType, scale, value, true, AsUIType.Excel));
50
+ }
51
+ }
52
+ if (columnValues.length > maxColumnLength) {
53
+ maxColumnLength = columnValues.length;
54
+ }
55
+ columnList[columnIndex] = columnValues;
56
+ }
57
+ const resultRowList = new Array(maxColumnLength);
58
+ for (let rowIndex = 0; rowIndex < maxColumnLength; rowIndex++) {
59
+ const rowValues = new Array(columns.length);
60
+ for (const [index, columnValues] of columnList.entries()) {
61
+ let csvValue;
62
+ if (rowIndex < columnValues.length) {
63
+ csvValue = columnValues[rowIndex];
64
+ }
65
+ else {
66
+ csvValue = "";
67
+ if (fieldsToDuplicateValues) {
68
+ const field = columns[index].field;
69
+ if (typeof field === 'string') {
70
+ if (fieldsToDuplicateValues.includes(field)) {
71
+ if (columnValues.length > 0) {
72
+ csvValue = columnValues[0];
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ rowValues[index] = csvValue;
79
+ }
80
+ resultRowList[rowIndex] = rowValues;
81
+ }
82
+ return resultRowList;
83
+ }
84
+ transformToEntity(data, selectQueryBuilder) {
85
+ const transformer = new RawSqlResultsToEntityTransformer(selectQueryBuilder.expressionMap, selectQueryBuilder.connection.driver, [], [], undefined);
86
+ const entityList = transformer.transform([data], selectQueryBuilder.expressionMap.mainAlias);
87
+ return entityList[0];
88
+ }
89
+ }
90
+ //# sourceMappingURL=x-export.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-export.service.js","sourceRoot":"","sources":["../../src/services/x-export.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { StreamableFile } from "@nestjs/common";
2
+ import { XFileService } from "./x-file.service.js";
3
+ import { XFile } from "../administration/x-file.entity.js";
4
+ export declare class XFileController {
5
+ private readonly xFileService;
6
+ constructor(xFileService: XFileService);
7
+ uploadFileIntoFileSystem(body: any, file: Express.Multer.File): Promise<XFile>;
8
+ uploadFileIntoDb(body: any, file: Express.Multer.File): Promise<XFile>;
9
+ downloadFile(body: {
10
+ xFileId: number;
11
+ }): Promise<StreamableFile>;
12
+ private static getXFilesDir;
13
+ }