d5-api-initializer 1.4.1 → 1.5.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d5-api-initializer",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "license": "MIT",
5
5
  "dependencies": {},
6
6
  "main": "publish/cjs/d5-api-initializer",
@@ -35,13 +35,13 @@
35
35
  "@types/node": "20.11.16",
36
36
  "archiver": "6.0.1",
37
37
  "copy-webpack-plugin": "^11.0.0",
38
- "webpack": "5.86.0",
39
- "webpack-cli": "5.1.4",
40
- "dotenv": "8.2.0",
38
+ "webpack": "5.98.0",
39
+ "webpack-cli": "6.0.1",
40
+ "dotenv": "16.4.7",
41
41
  "eslint": "7.19.0",
42
42
  "rimraf": "5.0.5",
43
- "ts-loader": "8.0.17",
43
+ "ts-loader": "9.5.2",
44
44
  "tsup": "7.0.0",
45
- "typescript": "5.3.3"
45
+ "typescript": "5.7.3"
46
46
  }
47
47
  }
@@ -606,6 +606,76 @@ var ApiCore = class {
606
606
  */
607
607
  };
608
608
 
609
+ // src/typeUtils.ts
610
+ var types = {
611
+ "[object Array]": "array",
612
+ "[object Date]": "date",
613
+ "[object Object]": "object",
614
+ "[object String]": "string",
615
+ "[object Null]": "null"
616
+ };
617
+ var type = function(object) {
618
+ const typeOfObject = Object.prototype.toString.call(object);
619
+ return typeof object === "object" ? types[typeOfObject] || "object" : typeof object;
620
+ };
621
+ var isDate = function(object) {
622
+ return type(object) === "date";
623
+ };
624
+ var isUndefined = (val) => val === void 0;
625
+ var isDefined = function(value) {
626
+ return value !== null && !isUndefined(value);
627
+ };
628
+ var isFunction = function(object) {
629
+ return typeof object === "function";
630
+ };
631
+ var isObject = function(value) {
632
+ return type(value) === "object" && !isNull(value) && !isArray(value) && !isDate(value);
633
+ };
634
+ var isNull = function(value) {
635
+ return type(value) === "null";
636
+ };
637
+ var isArray = function(value) {
638
+ return type(value) === "array";
639
+ };
640
+
641
+ // src/classes/addWaterMark.ts
642
+ var convertSourceTypeToLoadParams = (params) => {
643
+ if (params.sourceType === "report") {
644
+ return {
645
+ report: params.config
646
+ };
647
+ }
648
+ return params.config;
649
+ };
650
+ function addWatermarkToPdf(jsWapiRequest, params) {
651
+ params.watermarks.forEach((watermark) => {
652
+ if (!isDefined(watermark.position))
653
+ throw new Error("Position is undefined for watermark");
654
+ if (!isObject(watermark.position) && !isFunction(watermark.position))
655
+ throw new Error("Position must be type of object or function");
656
+ });
657
+ jsWapiRequest.pdf().load({
658
+ ...convertSourceTypeToLoadParams(params.sourcePdf),
659
+ callback: (origPdf) => {
660
+ params.watermarks.forEach((watermark) => {
661
+ jsWapiRequest.pdf().load({
662
+ ...convertSourceTypeToLoadParams(watermark),
663
+ callback: (stampPdf) => {
664
+ if (isObject(watermark.position)) {
665
+ const position = watermark.position;
666
+ origPdf.overlay(stampPdf, { page: position.page, x: position.x, y: position.y });
667
+ }
668
+ if (typeof watermark.position === "function") {
669
+ origPdf.overlay(stampPdf, watermark.position(origPdf, stampPdf));
670
+ }
671
+ }
672
+ });
673
+ });
674
+ origPdf.save(params.saveConfig);
675
+ }
676
+ });
677
+ }
678
+
609
679
  // src/classes/ApiRequest.ts
610
680
  var ApiRequest = class {
611
681
  constructor(jsWapiRequest, objectName) {
@@ -836,6 +906,16 @@ var ApiRequest = class {
836
906
  newApiInvoker(objectName, operName) {
837
907
  return new ApiInvoker(this.newJSWapiInvoker(objectName, operName), objectName);
838
908
  }
909
+ addWatermarkToPdf(params) {
910
+ addWatermarkToPdf(this._jsWapiRequest, params);
911
+ }
912
+ /**
913
+ * Вернуть содержимое meta-Excel в виде JSON-объекта:
914
+ * @param fileRequestId имя поля в multipart-запросе с Excel-файлом
915
+ */
916
+ getMetaExcelFileAsJson(fileRequestId2) {
917
+ return this._jsWapiRequest.xls().getMetaExcelFileAsJson(fileRequestId2);
918
+ }
839
919
  /**
840
920
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
841
921
  * @param msgKey
@@ -42,9 +42,28 @@ declare namespace jsWapi {
42
42
  getParams(): any;
43
43
  getUserId(): number;
44
44
  getPage(): number;
45
+ addSorts(sorts: string[]): JSWapiRequest;
46
+ putAggregatedColumns(columns: any): JSWapiRequest;
47
+ addColumns(columns: string[]): JSWapiRequest;
48
+ putNestedColumns(columns: Record<string, any>): JSWapiRequest;
49
+ putFilters(filters: IFiltersCollection): JSWapiRequest;
50
+ putParam(params: Record<string, any>): JSWapiRequest;
51
+ removeSorts(sortsNames: string[]): JSWapiRequest;
52
+ removeColumns(columnsNames: string[]): JSWapiRequest;
53
+ removeAggregatedColumns(aggregatedColumnsNames: string[]): JSWapiRequest;
54
+ removeNestedColumns(nestedColumnsNames: string[]): JSWapiRequest;
55
+ removeParams(paramsNames: string[]): JSWapiRequest;
56
+ removeFilters(filtersNames: string[]): JSWapiRequest;
57
+ isFilterExists(filterName: string): boolean;
58
+ invoke(): JSWapiResponse;
59
+ newJSWapiInvoker(objectName: string, operName: string): JSWapiInvoker;
45
60
  getFirstRows(): number;
46
61
  getRowsPerPage(): number;
47
62
  getLanguage(): string;
63
+ pdf(): JSWapiPdf;
64
+ xls(): JSWapiXls;
65
+ getMultiFileAsString(...arg: string[]): any;
66
+ getMultiExcelFileAsJson(...arg: string[]): any;
48
67
  getRequest(object: string): Record<string, any>[];
49
68
  getFilter(filterName: string): any;
50
69
  getFilterEqualOneValue(filterName: string): any;
@@ -61,6 +80,7 @@ declare namespace jsWapi {
61
80
  setRowsPerPage(number: number): JSWapiRequest;
62
81
  setFirstRows(number: number): JSWapiRequest;
63
82
  setRequest(request: any): JSWapiRequest;
83
+ putRequest(objectName: string, req: any): JSWapiRequest;
64
84
  setHierarchy(parentColumn: string, requestKind?: number): JSWapiRequest;
65
85
  };
66
86
  type JSWapiResponse = {
@@ -142,6 +162,79 @@ declare namespace jsWapi {
142
162
  putJSWapiOper(operation: string, callback: (request: JSWapiRequest, response: JSWapiResponse) => void): void;
143
163
  }
144
164
  function setJSWapiObject(init: (object: JSWapiApplication) => void): void;
165
+ type JSWapiPdfLoadParamsObject = {
166
+ object: string;
167
+ field: string;
168
+ keyValue: any;
169
+ callback: (pdf: JSWapiPdfDocument) => void;
170
+ };
171
+ type JSWapiPdfLoadParamsReport = {
172
+ report: {
173
+ type: 'dx' | 'xls';
174
+ name: string;
175
+ params: Record<string, any>;
176
+ } | {
177
+ type: 'tax';
178
+ code: string;
179
+ params: Record<string, any>;
180
+ };
181
+ callback: (pdf: JSWapiPdfDocument) => void;
182
+ };
183
+ type JSWapiPdfLoadParams = JSWapiPdfLoadParamsObject | JSWapiPdfLoadParamsReport;
184
+ type JSWapiStampPosition = {
185
+ page: number;
186
+ x: number;
187
+ y: number;
188
+ };
189
+ interface JSWapiPdfDocument {
190
+ save(params: {
191
+ object: string;
192
+ keyValue: any;
193
+ field: string;
194
+ fileName: string;
195
+ }): void;
196
+ /**
197
+ * На поточний документ накласти печать stampPdf
198
+ * @param stampPdf PDF документ на который будет наложено текущий документ
199
+ * @param params
200
+ * @param params.page номер страницы, на которую накладывать. Если page < 0, то нумерация с конца (т.е. page = -1 - последняя страница)
201
+ * @param params.x координата левого угла в мм
202
+ * @param params.y координата верхнего угла в мм
203
+ */
204
+ overlay(stampPdf: JSWapiPdfDocument, params: JSWapiStampPosition): void;
205
+ /**
206
+ * Ширина страницы в мм
207
+ * @param pageNumber Номер страницы. Если pageNumber < 0, то нумеровать с конца
208
+ */
209
+ getPageWidth(pageNumber: number): number;
210
+ /**
211
+ * Высота страницы в мм
212
+ * @param pageNumber Номер страницы. Если pageNumber < 0, то нумеровать с конца
213
+ */
214
+ getPageHeight(pageNumber: number): number;
215
+ /**
216
+ * Количество страниц
217
+ */
218
+ getPageCount(): number;
219
+ }
220
+ interface JSWapiPdf {
221
+ load(params: JSWapiPdfLoadParams): JSWapiPdf;
222
+ }
223
+ /**
224
+ * Вернуть содержимое meta-Excel в виде JSON-объекта:
225
+ {
226
+ "sheet123": {
227
+ "TaxBillHeader" : [
228
+ {"R001G3": "", "R01G1": "", ...}, ...
229
+ ], ...
230
+ }, ...
231
+ }
232
+ *
233
+ * @param fileRequestId имя поля в multipart-запросе с Excel-файлом
234
+ */
235
+ interface JSWapiXls {
236
+ getMetaExcelFileAsJson(fileRequestId: string): JSWapiPdf;
237
+ }
145
238
  }
146
239
 
147
240
  declare class FileLink {
@@ -258,10 +351,34 @@ declare class ApiInvoker implements IInvoker$1<ApiInvoker> {
258
351
  invoke(): ApiResponse;
259
352
  }
260
353
 
354
+ type SourceTypeReport = {
355
+ sourceType: 'report';
356
+ config: jsWapi.JSWapiPdfLoadParamsReport['report'];
357
+ };
358
+ type SourceTypeObject = {
359
+ sourceType: 'object';
360
+ config: Omit<jsWapi.JSWapiPdfLoadParamsObject, 'callback'>;
361
+ };
362
+ type SourceTypeList = SourceTypeReport | SourceTypeObject;
363
+ type SaveConfig = {
364
+ object: string;
365
+ keyValue: any;
366
+ field: string;
367
+ fileName: string;
368
+ };
369
+ type WaterMarkSourceType = SourceTypeList & {
370
+ position: ((sourcePdf: jsWapi.JSWapiPdfDocument, stampPdf: jsWapi.JSWapiPdfDocument) => jsWapi.JSWapiStampPosition) | jsWapi.JSWapiStampPosition;
371
+ };
372
+ type AddWatermarkToPdfParams = {
373
+ sourcePdf: SourceTypeList;
374
+ watermarks: Array<WaterMarkSourceType>;
375
+ saveConfig: SaveConfig;
376
+ };
377
+
261
378
  declare class ApiRequest {
262
379
  private _jsWapiRequest;
263
380
  private readonly _objectName;
264
- constructor(jsWapiRequest: any, objectName: string);
381
+ constructor(jsWapiRequest: jsWapi.JSWapiRequest, objectName: string);
265
382
  get objectName(): string;
266
383
  get columns(): string[];
267
384
  get aggregatedColumns(): IMappedCollection;
@@ -336,8 +453,14 @@ declare class ApiRequest {
336
453
  removeFilters(filtersNames: string[]): ApiRequest;
337
454
  hasFilter(filterName: string): boolean;
338
455
  invoke(): ApiResponse;
339
- newJSWapiInvoker(objectName: string, operName: string): any;
456
+ newJSWapiInvoker(objectName: string, operName: string): jsWapi.JSWapiInvoker;
340
457
  newApiInvoker(objectName: string, operName: string): ApiInvoker;
458
+ addWatermarkToPdf(params: AddWatermarkToPdfParams): void;
459
+ /**
460
+ * Вернуть содержимое meta-Excel в виде JSON-объекта:
461
+ * @param fileRequestId имя поля в multipart-запросе с Excel-файлом
462
+ */
463
+ getMetaExcelFileAsJson(fileRequestId: string): Record<string, any>;
341
464
  /**
342
465
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
343
466
  * @param msgKey
@@ -567,6 +567,76 @@ var ApiCore = class {
567
567
  */
568
568
  };
569
569
 
570
+ // src/typeUtils.ts
571
+ var types = {
572
+ "[object Array]": "array",
573
+ "[object Date]": "date",
574
+ "[object Object]": "object",
575
+ "[object String]": "string",
576
+ "[object Null]": "null"
577
+ };
578
+ var type = function(object) {
579
+ const typeOfObject = Object.prototype.toString.call(object);
580
+ return typeof object === "object" ? types[typeOfObject] || "object" : typeof object;
581
+ };
582
+ var isDate = function(object) {
583
+ return type(object) === "date";
584
+ };
585
+ var isUndefined = (val) => val === void 0;
586
+ var isDefined = function(value) {
587
+ return value !== null && !isUndefined(value);
588
+ };
589
+ var isFunction = function(object) {
590
+ return typeof object === "function";
591
+ };
592
+ var isObject = function(value) {
593
+ return type(value) === "object" && !isNull(value) && !isArray(value) && !isDate(value);
594
+ };
595
+ var isNull = function(value) {
596
+ return type(value) === "null";
597
+ };
598
+ var isArray = function(value) {
599
+ return type(value) === "array";
600
+ };
601
+
602
+ // src/classes/addWaterMark.ts
603
+ var convertSourceTypeToLoadParams = (params) => {
604
+ if (params.sourceType === "report") {
605
+ return {
606
+ report: params.config
607
+ };
608
+ }
609
+ return params.config;
610
+ };
611
+ function addWatermarkToPdf(jsWapiRequest, params) {
612
+ params.watermarks.forEach((watermark) => {
613
+ if (!isDefined(watermark.position))
614
+ throw new Error("Position is undefined for watermark");
615
+ if (!isObject(watermark.position) && !isFunction(watermark.position))
616
+ throw new Error("Position must be type of object or function");
617
+ });
618
+ jsWapiRequest.pdf().load({
619
+ ...convertSourceTypeToLoadParams(params.sourcePdf),
620
+ callback: (origPdf) => {
621
+ params.watermarks.forEach((watermark) => {
622
+ jsWapiRequest.pdf().load({
623
+ ...convertSourceTypeToLoadParams(watermark),
624
+ callback: (stampPdf) => {
625
+ if (isObject(watermark.position)) {
626
+ const position = watermark.position;
627
+ origPdf.overlay(stampPdf, { page: position.page, x: position.x, y: position.y });
628
+ }
629
+ if (typeof watermark.position === "function") {
630
+ origPdf.overlay(stampPdf, watermark.position(origPdf, stampPdf));
631
+ }
632
+ }
633
+ });
634
+ });
635
+ origPdf.save(params.saveConfig);
636
+ }
637
+ });
638
+ }
639
+
570
640
  // src/classes/ApiRequest.ts
571
641
  var ApiRequest = class {
572
642
  constructor(jsWapiRequest, objectName) {
@@ -797,6 +867,16 @@ var ApiRequest = class {
797
867
  newApiInvoker(objectName, operName) {
798
868
  return new ApiInvoker(this.newJSWapiInvoker(objectName, operName), objectName);
799
869
  }
870
+ addWatermarkToPdf(params) {
871
+ addWatermarkToPdf(this._jsWapiRequest, params);
872
+ }
873
+ /**
874
+ * Вернуть содержимое meta-Excel в виде JSON-объекта:
875
+ * @param fileRequestId имя поля в multipart-запросе с Excel-файлом
876
+ */
877
+ getMetaExcelFileAsJson(fileRequestId2) {
878
+ return this._jsWapiRequest.xls().getMetaExcelFileAsJson(fileRequestId2);
879
+ }
800
880
  /**
801
881
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
802
882
  * @param msgKey
@@ -567,6 +567,76 @@ var ApiCore = class {
567
567
  */
568
568
  };
569
569
 
570
+ // src/typeUtils.ts
571
+ var types = {
572
+ "[object Array]": "array",
573
+ "[object Date]": "date",
574
+ "[object Object]": "object",
575
+ "[object String]": "string",
576
+ "[object Null]": "null"
577
+ };
578
+ var type = function(object) {
579
+ const typeOfObject = Object.prototype.toString.call(object);
580
+ return typeof object === "object" ? types[typeOfObject] || "object" : typeof object;
581
+ };
582
+ var isDate = function(object) {
583
+ return type(object) === "date";
584
+ };
585
+ var isUndefined = (val) => val === void 0;
586
+ var isDefined = function(value) {
587
+ return value !== null && !isUndefined(value);
588
+ };
589
+ var isFunction = function(object) {
590
+ return typeof object === "function";
591
+ };
592
+ var isObject = function(value) {
593
+ return type(value) === "object" && !isNull(value) && !isArray(value) && !isDate(value);
594
+ };
595
+ var isNull = function(value) {
596
+ return type(value) === "null";
597
+ };
598
+ var isArray = function(value) {
599
+ return type(value) === "array";
600
+ };
601
+
602
+ // src/classes/addWaterMark.ts
603
+ var convertSourceTypeToLoadParams = (params) => {
604
+ if (params.sourceType === "report") {
605
+ return {
606
+ report: params.config
607
+ };
608
+ }
609
+ return params.config;
610
+ };
611
+ function addWatermarkToPdf(jsWapiRequest, params) {
612
+ params.watermarks.forEach((watermark) => {
613
+ if (!isDefined(watermark.position))
614
+ throw new Error("Position is undefined for watermark");
615
+ if (!isObject(watermark.position) && !isFunction(watermark.position))
616
+ throw new Error("Position must be type of object or function");
617
+ });
618
+ jsWapiRequest.pdf().load({
619
+ ...convertSourceTypeToLoadParams(params.sourcePdf),
620
+ callback: (origPdf) => {
621
+ params.watermarks.forEach((watermark) => {
622
+ jsWapiRequest.pdf().load({
623
+ ...convertSourceTypeToLoadParams(watermark),
624
+ callback: (stampPdf) => {
625
+ if (isObject(watermark.position)) {
626
+ const position = watermark.position;
627
+ origPdf.overlay(stampPdf, { page: position.page, x: position.x, y: position.y });
628
+ }
629
+ if (typeof watermark.position === "function") {
630
+ origPdf.overlay(stampPdf, watermark.position(origPdf, stampPdf));
631
+ }
632
+ }
633
+ });
634
+ });
635
+ origPdf.save(params.saveConfig);
636
+ }
637
+ });
638
+ }
639
+
570
640
  // src/classes/ApiRequest.ts
571
641
  var ApiRequest = class {
572
642
  constructor(jsWapiRequest, objectName) {
@@ -797,6 +867,16 @@ var ApiRequest = class {
797
867
  newApiInvoker(objectName, operName) {
798
868
  return new ApiInvoker(this.newJSWapiInvoker(objectName, operName), objectName);
799
869
  }
870
+ addWatermarkToPdf(params) {
871
+ addWatermarkToPdf(this._jsWapiRequest, params);
872
+ }
873
+ /**
874
+ * Вернуть содержимое meta-Excel в виде JSON-объекта:
875
+ * @param fileRequestId имя поля в multipart-запросе с Excel-файлом
876
+ */
877
+ getMetaExcelFileAsJson(fileRequestId2) {
878
+ return this._jsWapiRequest.xls().getMetaExcelFileAsJson(fileRequestId2);
879
+ }
800
880
  /**
801
881
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
802
882
  * @param msgKey