d5-api-initializer 1.4.0 → 1.5.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d5-api-initializer",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
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,9 @@ 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
+ }
839
912
  /**
840
913
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
841
914
  * @param msgKey
@@ -42,9 +42,27 @@ 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
+ getMultiFileAsString(...arg: string[]): any;
65
+ getMultiExcelFileAsJson(...arg: string[]): any;
48
66
  getRequest(object: string): Record<string, any>[];
49
67
  getFilter(filterName: string): any;
50
68
  getFilterEqualOneValue(filterName: string): any;
@@ -61,6 +79,7 @@ declare namespace jsWapi {
61
79
  setRowsPerPage(number: number): JSWapiRequest;
62
80
  setFirstRows(number: number): JSWapiRequest;
63
81
  setRequest(request: any): JSWapiRequest;
82
+ putRequest(objectName: string, req: any): JSWapiRequest;
64
83
  setHierarchy(parentColumn: string, requestKind?: number): JSWapiRequest;
65
84
  };
66
85
  type JSWapiResponse = {
@@ -142,6 +161,64 @@ declare namespace jsWapi {
142
161
  putJSWapiOper(operation: string, callback: (request: JSWapiRequest, response: JSWapiResponse) => void): void;
143
162
  }
144
163
  function setJSWapiObject(init: (object: JSWapiApplication) => void): void;
164
+ type JSWapiPdfLoadParamsObject = {
165
+ object: string;
166
+ field: string;
167
+ keyValue: any;
168
+ callback: (pdf: JSWapiPdfDocument) => void;
169
+ };
170
+ type JSWapiPdfLoadParamsReport = {
171
+ report: {
172
+ type: 'dx' | 'xls';
173
+ name: string;
174
+ params: Record<string, any>;
175
+ } | {
176
+ type: 'tax';
177
+ code: string;
178
+ params: Record<string, any>;
179
+ };
180
+ callback: (pdf: JSWapiPdfDocument) => void;
181
+ };
182
+ type JSWapiPdfLoadParams = JSWapiPdfLoadParamsObject | JSWapiPdfLoadParamsReport;
183
+ type JSWapiStampPosition = {
184
+ page: number;
185
+ x: number;
186
+ y: number;
187
+ };
188
+ interface JSWapiPdfDocument {
189
+ save(params: {
190
+ object: string;
191
+ keyValue: any;
192
+ field: string;
193
+ fileName: string;
194
+ }): void;
195
+ /**
196
+ * На поточний документ накласти печать stampPdf
197
+ * @param stampPdf PDF документ на который будет наложено текущий документ
198
+ * @param params
199
+ * @param params.page номер страницы, на которую накладывать. Если page < 0, то нумерация с конца (т.е. page = -1 - последняя страница)
200
+ * @param params.x координата левого угла в мм
201
+ * @param params.y координата верхнего угла в мм
202
+ */
203
+ overlay(stampPdf: JSWapiPdfDocument, params: JSWapiStampPosition): void;
204
+ /**
205
+ * Ширина страницы в мм
206
+ * @param pageNumber Номер страницы. Если pageNumber < 0, то нумеровать с конца
207
+ */
208
+ getPageWidth(pageNumber: number): number;
209
+ /**
210
+ * Высота страницы в мм
211
+ * @param pageNumber Номер страницы. Если pageNumber < 0, то нумеровать с конца
212
+ */
213
+ getPageHeight(pageNumber: number): number;
214
+ /**
215
+ * Количество страниц
216
+ */
217
+ getPageCount(): number;
218
+ }
219
+ interface JSWapiPdf {
220
+ load(params: JSWapiPdfLoadParams): JSWapiPdf;
221
+ }
145
222
  }
146
223
 
147
224
  declare class FileLink {
@@ -258,10 +335,34 @@ declare class ApiInvoker implements IInvoker$1<ApiInvoker> {
258
335
  invoke(): ApiResponse;
259
336
  }
260
337
 
338
+ type SourceTypeReport = {
339
+ sourceType: 'report';
340
+ config: jsWapi.JSWapiPdfLoadParamsReport['report'];
341
+ };
342
+ type SourceTypeObject = {
343
+ sourceType: 'object';
344
+ config: Omit<jsWapi.JSWapiPdfLoadParamsObject, 'callback'>;
345
+ };
346
+ type SourceTypeList = SourceTypeReport | SourceTypeObject;
347
+ type SaveConfig = {
348
+ object: string;
349
+ keyValue: any;
350
+ field: string;
351
+ fileName: string;
352
+ };
353
+ type WaterMarkSourceType = SourceTypeList & {
354
+ position: ((sourcePdf: jsWapi.JSWapiPdfDocument, stampPdf: jsWapi.JSWapiPdfDocument) => jsWapi.JSWapiStampPosition) | jsWapi.JSWapiStampPosition;
355
+ };
356
+ type AddWatermarkToPdfParams = {
357
+ sourcePdf: SourceTypeList;
358
+ watermarks: Array<WaterMarkSourceType>;
359
+ saveConfig: SaveConfig;
360
+ };
361
+
261
362
  declare class ApiRequest {
262
363
  private _jsWapiRequest;
263
364
  private readonly _objectName;
264
- constructor(jsWapiRequest: any, objectName: string);
365
+ constructor(jsWapiRequest: jsWapi.JSWapiRequest, objectName: string);
265
366
  get objectName(): string;
266
367
  get columns(): string[];
267
368
  get aggregatedColumns(): IMappedCollection;
@@ -336,8 +437,9 @@ declare class ApiRequest {
336
437
  removeFilters(filtersNames: string[]): ApiRequest;
337
438
  hasFilter(filterName: string): boolean;
338
439
  invoke(): ApiResponse;
339
- newJSWapiInvoker(objectName: string, operName: string): any;
440
+ newJSWapiInvoker(objectName: string, operName: string): jsWapi.JSWapiInvoker;
340
441
  newApiInvoker(objectName: string, operName: string): ApiInvoker;
442
+ addWatermarkToPdf(params: AddWatermarkToPdfParams): void;
341
443
  /**
342
444
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
343
445
  * @param msgKey
@@ -440,22 +542,25 @@ declare class ApiHttpResponse {
440
542
  }
441
543
 
442
544
  interface IFilterValue {
443
- '='?: string | number | Array<string | number>;
444
- '>'?: string | number | Array<string | number>;
445
- '>='?: string | number | Array<string | number>;
446
- '<'?: string | number | Array<string | number>;
447
- '<='?: string | number | Array<string | number>;
448
- '!='?: string | number | Array<string | number>;
449
- 'between'?: string | number | Array<string | number>;
450
- 'like'?: string | number | Array<string | number>;
451
- '%'?: string | number | Array<string | number>;
545
+ '='?: string | number | null | Array<string | number>;
546
+ '=~'?: string | null | Array<string>;
547
+ '>'?: string | number;
548
+ '>='?: string | number;
549
+ '<'?: string | number;
550
+ '<='?: string | number;
551
+ '!='?: string | number | null | Array<string | number>;
552
+ '<>'?: string | number | null | Array<string | number>;
553
+ 'between'?: [string | number, string | number];
554
+ 'like'?: string | number;
555
+ '%'?: string;
556
+ '%~'?: string;
452
557
  }
453
558
  interface IFilter {
454
559
  [fieldName: string]: IFilterValue;
455
560
  }
456
- interface IFiltersCollection {
457
- [property: string]: IFilterValue | IFilter[];
458
- }
561
+ type IFiltersCollection = {
562
+ [fieldName: string]: IFilterValue | IFilterValue[] | IFiltersCollection[];
563
+ };
459
564
  interface IMappedCollection {
460
565
  [name: string]: any;
461
566
  }
@@ -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,9 @@ 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
+ }
800
873
  /**
801
874
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
802
875
  * @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,9 @@ 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
+ }
800
873
  /**
801
874
  * Переводит и форматирует строку из словаря переводов согласно текущего языка приложения.
802
875
  * @param msgKey