@nx-ddd/excel 19.0.0-preview-merge-graphql-enhanced-to-graphql.1 → 19.2.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/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # @nx-ddd/excel
2
+
3
+ Excel操作のためのDDDベースのライブラリ
4
+
5
+ ## ディレクトリ構成
6
+
7
+ ```
8
+ src/lib/
9
+ ├── domain/ # ドメイン層(インターフェース定義)
10
+ │ └── index.ts
11
+ ├── infra/ # インフラストラクチャ層(実装)
12
+ │ ├── excel.repository.impl.ts
13
+ │ └── excel.repository.impl.spec.ts
14
+ ├── impl/ # サービス実装
15
+ │ ├── excel.service.impl.ts
16
+ │ └── excel.service.impl.spec.ts
17
+ ├── providers/ # DI設定
18
+ │ └── excel.providers.ts
19
+ ├── tokens/ # InjectionToken定義
20
+ │ └── excel.token.ts
21
+ ├── __mocks__/ # テスト用モック
22
+ │ ├── fs.ts
23
+ │ ├── path.ts
24
+ │ └── xlsx.ts
25
+ ├── excel.converter.ts # データ変換ユーティリティ
26
+ ├── excel.decorators.ts # デコレーター
27
+ ├── excel.repository.ts # リポジトリの再エクスポート
28
+ └── excel.service.ts # サービスインターフェース
29
+ ```
30
+
31
+ ## 使用方法
32
+
33
+ ### 1. DIの設定
34
+
35
+ ```typescript
36
+ import { provideExcelService } from '@nx-ddd/excel/providers';
37
+
38
+ // Angularアプリケーション
39
+ @NgModule({
40
+ providers: [
41
+ ...provideExcelService()
42
+ ]
43
+ })
44
+ export class AppModule {}
45
+
46
+ // スタンドアロンアプリケーション
47
+ bootstrapApplication(AppComponent, {
48
+ providers: [
49
+ ...provideExcelService()
50
+ ]
51
+ });
52
+ ```
53
+
54
+ ### 2. サービスの使用
55
+
56
+ ```typescript
57
+ import { inject } from '@angular/core';
58
+ import { EXCEL_SERVICE } from '@nx-ddd/excel/tokens';
59
+
60
+ @Injectable()
61
+ export class MyService {
62
+ private readonly excelService = inject(EXCEL_SERVICE);
63
+
64
+ async exportData() {
65
+ await this.excelService.writeSheet(
66
+ 'output.xlsx',
67
+ 'Sheet1',
68
+ data,
69
+ ['Column1', 'Column2']
70
+ );
71
+ }
72
+
73
+ async importData() {
74
+ const data = await this.excelService.readSheet('input.xlsx', 'Sheet1');
75
+ return data;
76
+ }
77
+ }
78
+ ```
79
+
80
+ ### 3. リポジトリの使用
81
+
82
+ ```typescript
83
+ import { getExcelRepository } from '@nx-ddd/excel';
84
+
85
+ // エンティティクラス
86
+ @Excel.Sheet('Users')
87
+ class User {
88
+ @Excel.Column('名前')
89
+ name: string;
90
+
91
+ @Excel.Column('メール')
92
+ email: string;
93
+ }
94
+
95
+ // リポジトリの取得
96
+ const userRepo = getExcelRepository(User, {
97
+ path: 'users.xlsx',
98
+ sheetName: 'Users'
99
+ });
100
+
101
+ // データの保存
102
+ await userRepo.saveMany(users);
103
+
104
+ // データの読み込み
105
+ const users = await userRepo.list();
106
+ ```
107
+
108
+ ## テスト
109
+
110
+ ```bash
111
+ nx test @nx-ddd/excel
112
+ ```
113
+
114
+ ## エクスポート構成
115
+
116
+ - `@nx-ddd/excel` - メインエクスポート
117
+ - `@nx-ddd/excel/providers` - DI設定
118
+ - `@nx-ddd/excel/tokens` - InjectionToken
119
+ - `@nx-ddd/excel/impl` - 実装詳細(通常は直接使用しない)
120
+
121
+ ## Building
122
+
123
+ Run `nx build @nx-ddd/excel` to build the library.
package/package.json CHANGED
@@ -1,34 +1,31 @@
1
1
  {
2
2
  "name": "@nx-ddd/excel",
3
- "version": "19.0.0-preview-merge-graphql-enhanced-to-graphql.1",
4
- "peerDependencies": {
5
- "@angular/core": ">=17.0.0",
6
- "@nx-ddd/core": "19.0.0-preview-merge-graphql-enhanced-to-graphql.1"
7
- },
8
- "module": "fesm2022/nx-ddd-excel.mjs",
9
- "typings": "index.d.ts",
3
+ "version": "19.2.1",
4
+ "type": "commonjs",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
10
7
  "exports": {
11
- "./package.json": {
12
- "default": "./package.json"
13
- },
14
8
  ".": {
15
- "types": "./index.d.ts",
16
- "default": "./fesm2022/nx-ddd-excel.mjs"
17
- },
18
- "./impl": {
19
- "types": "./impl/index.d.ts",
20
- "default": "./fesm2022/nx-ddd-excel-impl.mjs"
9
+ "types": "./src/index.d.ts",
10
+ "default": "./src/index.js"
21
11
  },
22
- "./infra": {
23
- "types": "./infra/index.d.ts",
24
- "default": "./fesm2022/nx-ddd-excel-infra.mjs"
12
+ "./providers": {
13
+ "types": "./src/lib/providers/index.d.ts",
14
+ "default": "./src/lib/providers/index.js"
25
15
  },
26
16
  "./tokens": {
27
- "types": "./tokens/index.d.ts",
28
- "default": "./fesm2022/nx-ddd-excel-tokens.mjs"
17
+ "types": "./src/lib/tokens/index.d.ts",
18
+ "default": "./src/lib/tokens/index.js"
19
+ },
20
+ "./impl": {
21
+ "types": "./src/lib/impl/index.d.ts",
22
+ "default": "./src/lib/impl/index.js"
29
23
  }
30
24
  },
31
- "sideEffects": false,
25
+ "files": [
26
+ "dist",
27
+ "!**/*.tsbuildinfo"
28
+ ],
32
29
  "dependencies": {
33
30
  "tslib": "^2.3.0"
34
31
  }
package/src/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/excel"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -1,60 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable } from '@angular/core';
3
- import * as XLSX from 'xlsx';
4
- import { existsSync, mkdirSync } from 'fs';
5
- import { dirname } from 'path';
6
-
7
- class ExcelServiceImpl {
8
- async readSheet(path, sheetName) {
9
- if (!existsSync(path)) {
10
- return [];
11
- }
12
- const workbook = XLSX.readFile(path);
13
- const worksheet = workbook.Sheets[sheetName];
14
- if (!worksheet) {
15
- return [];
16
- }
17
- return XLSX.utils.sheet_to_json(worksheet);
18
- }
19
- async writeSheet(path, sheetName, records, headers) {
20
- // Ensure directory exists
21
- const dir = dirname(path);
22
- if (!existsSync(dir)) {
23
- mkdirSync(dir, { recursive: true });
24
- }
25
- // Create or read existing workbook
26
- let workbook;
27
- if (existsSync(path)) {
28
- workbook = XLSX.readFile(path);
29
- }
30
- else {
31
- workbook = XLSX.utils.book_new();
32
- }
33
- // Create worksheet from records
34
- const worksheet = XLSX.utils.json_to_sheet(records, { header: headers });
35
- // Set column widths
36
- const colWidths = headers.map(header => ({ wch: Math.max(header.length + 5, 20) }));
37
- worksheet['!cols'] = colWidths;
38
- // Add or replace worksheet
39
- if (workbook.Sheets[sheetName]) {
40
- workbook.Sheets[sheetName] = worksheet;
41
- }
42
- else {
43
- XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
44
- }
45
- // Write file
46
- XLSX.writeFile(workbook, path);
47
- }
48
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ExcelServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
49
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ExcelServiceImpl });
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ExcelServiceImpl, decorators: [{
52
- type: Injectable
53
- }] });
54
-
55
- /**
56
- * Generated bundle index. Do not edit.
57
- */
58
-
59
- export { ExcelServiceImpl };
60
- //# sourceMappingURL=nx-ddd-excel-impl.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-excel-impl.mjs","sources":["../tmp-esm2022/impl/excel.service.impl.js","../tmp-esm2022/impl/nx-ddd-excel-impl.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as XLSX from 'xlsx';\nimport { existsSync, mkdirSync } from 'fs';\nimport { dirname } from 'path';\nimport * as i0 from \"@angular/core\";\nexport class ExcelServiceImpl {\n async readSheet(path, sheetName) {\n if (!existsSync(path)) {\n return [];\n }\n const workbook = XLSX.readFile(path);\n const worksheet = workbook.Sheets[sheetName];\n if (!worksheet) {\n return [];\n }\n return XLSX.utils.sheet_to_json(worksheet);\n }\n async writeSheet(path, sheetName, records, headers) {\n // Ensure directory exists\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n // Create or read existing workbook\n let workbook;\n if (existsSync(path)) {\n workbook = XLSX.readFile(path);\n }\n else {\n workbook = XLSX.utils.book_new();\n }\n // Create worksheet from records\n const worksheet = XLSX.utils.json_to_sheet(records, { header: headers });\n // Set column widths\n const colWidths = headers.map(header => ({ wch: Math.max(header.length + 5, 20) }));\n worksheet['!cols'] = colWidths;\n // Add or replace worksheet\n if (workbook.Sheets[sheetName]) {\n workbook.Sheets[sheetName] = worksheet;\n }\n else {\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n }\n // Write file\n XLSX.writeFile(workbook, path);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ExcelServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ExcelServiceImpl });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ExcelServiceImpl, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuc2VydmljZS5pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9leGNlbC9zcmMvbGliL2ltcGwvZXhjZWwuc2VydmljZS5pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJL0IsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixLQUFLLENBQUMsU0FBUyxDQUFDLElBQVksRUFBRSxTQUFpQjtRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBWSxFQUFFLFNBQWlCLEVBQUUsT0FBYyxFQUFFLE9BQWlCO1FBQ2pGLDBCQUEwQjtRQUMxQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksUUFBdUIsQ0FBQztRQUM1QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkMsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUV6RSxvQkFBb0I7UUFDcEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBRS9CLDJCQUEyQjtRQUMzQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvQixRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7dUdBL0NVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IEV4Y2VsU2VydmljZSB9IGZyb20gJ0BueC1kZGQvZXhjZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXhjZWxTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEV4Y2VsU2VydmljZSB7XG4gIGFzeW5jIHJlYWRTaGVldChwYXRoOiBzdHJpbmcsIHNoZWV0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGlmICghZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtib29rID0gWExTWC5yZWFkRmlsZShwYXRoKTtcbiAgICBjb25zdCB3b3Jrc2hlZXQgPSB3b3JrYm9vay5TaGVldHNbc2hlZXROYW1lXTtcblxuICAgIGlmICghd29ya3NoZWV0KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQpO1xuICB9XG5cbiAgYXN5bmMgd3JpdGVTaGVldChwYXRoOiBzdHJpbmcsIHNoZWV0TmFtZTogc3RyaW5nLCByZWNvcmRzOiBhbnlbXSwgaGVhZGVyczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBFbnN1cmUgZGlyZWN0b3J5IGV4aXN0c1xuICAgIGNvbnN0IGRpciA9IGRpcm5hbWUocGF0aCk7XG4gICAgaWYgKCFleGlzdHNTeW5jKGRpcikpIHtcbiAgICAgIG1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBvciByZWFkIGV4aXN0aW5nIHdvcmtib29rXG4gICAgbGV0IHdvcmtib29rOiBYTFNYLldvcmtCb29rO1xuICAgIGlmIChleGlzdHNTeW5jKHBhdGgpKSB7XG4gICAgICB3b3JrYm9vayA9IFhMU1gucmVhZEZpbGUocGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdvcmtib29rID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB3b3Jrc2hlZXQgZnJvbSByZWNvcmRzXG4gICAgY29uc3Qgd29ya3NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KHJlY29yZHMsIHsgaGVhZGVyOiBoZWFkZXJzIH0pO1xuXG4gICAgLy8gU2V0IGNvbHVtbiB3aWR0aHNcbiAgICBjb25zdCBjb2xXaWR0aHMgPSBoZWFkZXJzLm1hcChoZWFkZXIgPT4gKHsgd2NoOiBNYXRoLm1heChoZWFkZXIubGVuZ3RoICsgNSwgMjApIH0pKTtcbiAgICB3b3Jrc2hlZXRbJyFjb2xzJ10gPSBjb2xXaWR0aHM7XG5cbiAgICAvLyBBZGQgb3IgcmVwbGFjZSB3b3Jrc2hlZXRcbiAgICBpZiAod29ya2Jvb2suU2hlZXRzW3NoZWV0TmFtZV0pIHtcbiAgICAgIHdvcmtib29rLlNoZWV0c1tzaGVldE5hbWVdID0gd29ya3NoZWV0O1xuICAgIH0gZWxzZSB7XG4gICAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdvcmtib29rLCB3b3Jrc2hlZXQsIHNoZWV0TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgZmlsZVxuICAgIFhMU1gud3JpdGVGaWxlKHdvcmtib29rLCBwYXRoKTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWV4Y2VsLWltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2V4Y2VsL3NyYy9saWIvaW1wbC9ueC1kZGQtZXhjZWwtaW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;;AAKO,MAAM,gBAAgB,CAAC;AAC9B,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE;AACrC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5C,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;AACpD,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;AAClD,IAAI;AACJ,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AACxD;AACA,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAY,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAQ;AACR;AACA,QAAQ,IAAI,QAAQ;AACpB,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1C,QAAQ;AACR,aAAa;AACb,YAAY,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC5C,QAAQ;AACR;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAChF;AACA,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3F,QAAQ,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS;AACtC;AACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxC,YAAY,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS;AAClD,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;AACxE,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACtC,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC3K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC9H;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACnDb;AACA;AACA;;;;"}
@@ -1,59 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, inject } from '@angular/core';
3
- import { makeDI } from '@nx-ddd/core';
4
- import * as i1 from '@nx-ddd/excel';
5
- import { getConverter, getHeaders } from '@nx-ddd/excel';
6
- import { EXCEL_SERVICE } from '@nx-ddd/excel/tokens';
7
- import { ExcelServiceImpl } from '@nx-ddd/excel/impl';
8
-
9
- class BaseExcelRepository {
10
- async list() {
11
- const records = await this.excelService.readSheet(this.path, this.sheetName);
12
- return this.converter.fromExcelMany(records);
13
- }
14
- async saveMany(entities) {
15
- const records = this.converter.toExcelMany(entities);
16
- await this.excelService.writeSheet(this.path, this.sheetName, records, this.headers);
17
- }
18
- }
19
- class ExcelRepository extends BaseExcelRepository {
20
- path;
21
- sheetName;
22
- converter;
23
- headers;
24
- excelService;
25
- constructor(path, sheetName, converter, headers, excelService) {
26
- super();
27
- this.path = path;
28
- this.sheetName = sheetName;
29
- this.converter = converter;
30
- this.headers = headers;
31
- this.excelService = excelService;
32
- }
33
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ExcelRepository, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
34
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ExcelRepository });
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ExcelRepository, decorators: [{
37
- type: Injectable
38
- }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: i1.ExcelConverter }, { type: undefined }, { type: undefined }] });
39
- // Create DI token for ExcelRepository
40
- const EXCEL_REPOSITORY = makeDI('[@nx-ddd/excel] ExcelRepository');
41
- function getExcelRepository(Entity, config) {
42
- const { path, sheetName = Entity.name, converter = getConverter(Entity), headers = getHeaders(Entity) } = config;
43
- // Try to inject ExcelService, fallback to creating new instance
44
- let excelService;
45
- try {
46
- excelService = inject(EXCEL_SERVICE);
47
- }
48
- catch {
49
- excelService = new ExcelServiceImpl();
50
- }
51
- return new ExcelRepository(path, sheetName, converter, headers, excelService);
52
- }
53
-
54
- /**
55
- * Generated bundle index. Do not edit.
56
- */
57
-
58
- export { BaseExcelRepository, EXCEL_REPOSITORY, ExcelRepository, getExcelRepository };
59
- //# sourceMappingURL=nx-ddd-excel-infra.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-excel-infra.mjs","sources":["../tmp-esm2022/infra/excel.repository.impl.js","../tmp-esm2022/infra/nx-ddd-excel-infra.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { makeDI } from '@nx-ddd/core';\nimport { ExcelConverter, getConverter, getHeaders } from '@nx-ddd/excel';\nimport { EXCEL_SERVICE } from '@nx-ddd/excel/tokens';\nimport { ExcelServiceImpl } from '@nx-ddd/excel/impl';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@nx-ddd/excel\";\nexport class BaseExcelRepository {\n async list() {\n const records = await this.excelService.readSheet(this.path, this.sheetName);\n return this.converter.fromExcelMany(records);\n }\n async saveMany(entities) {\n const records = this.converter.toExcelMany(entities);\n await this.excelService.writeSheet(this.path, this.sheetName, records, this.headers);\n }\n}\nexport class ExcelRepository extends BaseExcelRepository {\n path;\n sheetName;\n converter;\n headers;\n excelService;\n constructor(path, sheetName, converter, headers, excelService) {\n super();\n this.path = path;\n this.sheetName = sheetName;\n this.converter = converter;\n this.headers = headers;\n this.excelService = excelService;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ExcelRepository, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ExcelRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ExcelRepository, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: i1.ExcelConverter }, { type: undefined }, { type: undefined }] });\n// Create DI token for ExcelRepository\nexport const EXCEL_REPOSITORY = makeDI('[@nx-ddd/excel] ExcelRepository');\nexport function getExcelRepository(Entity, config) {\n const { path, sheetName = Entity.name, converter = getConverter(Entity), headers = getHeaders(Entity) } = config;\n // Try to inject ExcelService, fallback to creating new instance\n let excelService;\n try {\n excelService = inject(EXCEL_SERVICE);\n }\n catch {\n excelService = new ExcelServiceImpl();\n }\n return new ExcelRepository(path, sheetName, converter, headers, excelService);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwucmVwb3NpdG9yeS5pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9leGNlbC9zcmMvbGliL2luZnJhL2V4Y2VsLnJlcG9zaXRvcnkuaW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFTdEQsTUFBTSxPQUFnQixtQkFBbUI7SUFPdkMsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBTyxlQUFtQixTQUFRLG1CQUFzQjtJQUUxQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBTGxCLFlBQ2tCLElBQVksRUFDWixTQUFpQixFQUNqQixTQUE0QixFQUM1QixPQUFpQixFQUNqQixZQUEwQjtRQUUxQyxLQUFLLEVBQUUsQ0FBQztRQU5RLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFHNUMsQ0FBQzt1R0FUVSxlQUFlOzJHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7O0FBYVgsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBdUIsaUNBQWlDLENBQUMsQ0FBQztBQUVoRyxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQWUsRUFDZixNQUE2QjtJQUU3QixNQUFNLEVBQ0osSUFBSSxFQUNKLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUN2QixTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUNoQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixHQUFHLE1BQU0sQ0FBQztJQUVYLGdFQUFnRTtJQUNoRSxJQUFJLFlBQTBCLENBQUM7SUFDL0IsSUFBSSxDQUFDO1FBQ0gsWUFBWSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsWUFBWSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFlBQVksQ0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFrZURJIH0gZnJvbSAnQG54LWRkZC9jb3JlJztcbmltcG9ydCB7IEV4Y2VsU2VydmljZSwgRXhjZWxDb252ZXJ0ZXIsIGdldENvbnZlcnRlciwgZ2V0SGVhZGVycyB9IGZyb20gJ0BueC1kZGQvZXhjZWwnO1xuaW1wb3J0IHsgRVhDRUxfU0VSVklDRSB9IGZyb20gJ0BueC1kZGQvZXhjZWwvdG9rZW5zJztcbmltcG9ydCB7IEV4Y2VsU2VydmljZUltcGwgfSBmcm9tICdAbngtZGRkL2V4Y2VsL2ltcGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VsUmVwb3NpdG9yeUNvbmZpZyB7XG4gIHBhdGg6IHN0cmluZztcbiAgc2hlZXROYW1lPzogc3RyaW5nO1xuICBjb252ZXJ0ZXI/OiBFeGNlbENvbnZlcnRlcjxhbnk+O1xuICBoZWFkZXJzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRXhjZWxSZXBvc2l0b3J5PFQ+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IHNoZWV0TmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgY29udmVydGVyOiBFeGNlbENvbnZlcnRlcjxUPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGhlYWRlcnM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2U7XG5cbiAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCB0aGlzLmV4Y2VsU2VydmljZS5yZWFkU2hlZXQodGhpcy5wYXRoLCB0aGlzLnNoZWV0TmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuY29udmVydGVyLmZyb21FeGNlbE1hbnkocmVjb3Jkcyk7XG4gIH1cblxuICBhc3luYyBzYXZlTWFueShlbnRpdGllczogVFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuY29udmVydGVyLnRvRXhjZWxNYW55KGVudGl0aWVzKTtcbiAgICBhd2FpdCB0aGlzLmV4Y2VsU2VydmljZS53cml0ZVNoZWV0KHRoaXMucGF0aCwgdGhpcy5zaGVldE5hbWUsIHJlY29yZHMsIHRoaXMuaGVhZGVycyk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4Y2VsUmVwb3NpdG9yeTxUPiBleHRlbmRzIEJhc2VFeGNlbFJlcG9zaXRvcnk8VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGF0aDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBzaGVldE5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udmVydGVyOiBFeGNlbENvbnZlcnRlcjxUPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyczogc3RyaW5nW10sXG4gICAgcHVibGljIHJlYWRvbmx5IGV4Y2VsU2VydmljZTogRXhjZWxTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuLy8gQ3JlYXRlIERJIHRva2VuIGZvciBFeGNlbFJlcG9zaXRvcnlcbmV4cG9ydCBjb25zdCBFWENFTF9SRVBPU0lUT1JZID0gbWFrZURJPEV4Y2VsUmVwb3NpdG9yeTxhbnk+PignW0BueC1kZGQvZXhjZWxdIEV4Y2VsUmVwb3NpdG9yeScpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhjZWxSZXBvc2l0b3J5PFQ+KFxuICBFbnRpdHk6IFR5cGU8VD4sXG4gIGNvbmZpZzogRXhjZWxSZXBvc2l0b3J5Q29uZmlnXG4pOiBFeGNlbFJlcG9zaXRvcnk8VD4ge1xuICBjb25zdCB7XG4gICAgcGF0aCxcbiAgICBzaGVldE5hbWUgPSBFbnRpdHkubmFtZSxcbiAgICBjb252ZXJ0ZXIgPSBnZXRDb252ZXJ0ZXIoRW50aXR5KSxcbiAgICBoZWFkZXJzID0gZ2V0SGVhZGVycyhFbnRpdHkpXG4gIH0gPSBjb25maWc7XG5cbiAgLy8gVHJ5IHRvIGluamVjdCBFeGNlbFNlcnZpY2UsIGZhbGxiYWNrIHRvIGNyZWF0aW5nIG5ldyBpbnN0YW5jZVxuICBsZXQgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2U7XG4gIHRyeSB7XG4gICAgZXhjZWxTZXJ2aWNlID0gaW5qZWN0KEVYQ0VMX1NFUlZJQ0UpO1xuICB9IGNhdGNoIHtcbiAgICBleGNlbFNlcnZpY2UgPSBuZXcgRXhjZWxTZXJ2aWNlSW1wbCgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBFeGNlbFJlcG9zaXRvcnkoXG4gICAgcGF0aCxcbiAgICBzaGVldE5hbWUsXG4gICAgY29udmVydGVyLFxuICAgIGhlYWRlcnMsXG4gICAgZXhjZWxTZXJ2aWNlXG4gICk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWV4Y2VsLWluZnJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9leGNlbC9zcmMvbGliL2luZnJhL254LWRkZC1leGNlbC1pbmZyYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { makeDI } from '@nx-ddd/core';
2
-
3
- // Use makeDI for ExcelService token
4
- const EXCEL_SERVICE_DI = makeDI('[@nx-ddd/excel] ExcelService');
5
- // Export the token for backward compatibility
6
- const EXCEL_SERVICE = EXCEL_SERVICE_DI.token;
7
-
8
- /**
9
- * Generated bundle index. Do not edit.
10
- */
11
-
12
- export { EXCEL_SERVICE, EXCEL_SERVICE_DI };
13
- //# sourceMappingURL=nx-ddd-excel-tokens.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-excel-tokens.mjs","sources":["../tmp-esm2022/tokens/excel.token.js","../tmp-esm2022/tokens/nx-ddd-excel-tokens.js"],"sourcesContent":["import { makeDI } from '@nx-ddd/core';\n// Use makeDI for ExcelService token\nexport const EXCEL_SERVICE_DI = makeDI('[@nx-ddd/excel] ExcelService');\n// Export the token for backward compatibility\nexport const EXCEL_SERVICE = EXCEL_SERVICE_DI.token;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2V4Y2VsL3NyYy9saWIvdG9rZW5zL2V4Y2VsLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHdEMsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBZSw4QkFBOEIsQ0FBQyxDQUFDO0FBRXJGLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFrZURJIH0gZnJvbSAnQG54LWRkZC9jb3JlJztcbmltcG9ydCB7IEV4Y2VsU2VydmljZSB9IGZyb20gJ0BueC1kZGQvZXhjZWwnO1xuXG4vLyBVc2UgbWFrZURJIGZvciBFeGNlbFNlcnZpY2UgdG9rZW5cbmV4cG9ydCBjb25zdCBFWENFTF9TRVJWSUNFX0RJID0gbWFrZURJPEV4Y2VsU2VydmljZT4oJ1tAbngtZGRkL2V4Y2VsXSBFeGNlbFNlcnZpY2UnKTtcblxuLy8gRXhwb3J0IHRoZSB0b2tlbiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IEVYQ0VMX1NFUlZJQ0UgPSBFWENFTF9TRVJWSUNFX0RJLnRva2VuO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWV4Y2VsLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZXhjZWwvc3JjL2xpYi90b2tlbnMvbngtZGRkLWV4Y2VsLXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;AACA;AACY,MAAC,gBAAgB,GAAG,MAAM,CAAC,8BAA8B;AACrE;AACY,MAAC,aAAa,GAAG,gBAAgB,CAAC;;ACJ9C;AACA;AACA;;;;"}
@@ -1,217 +0,0 @@
1
- import 'reflect-metadata';
2
-
3
- const EXCEL_METADATA_KEY = Symbol('excel');
4
- function createDecorator(type, decoratorOptions = {}) {
5
- return function (name, options = {}) {
6
- return function (target, propertyKey) {
7
- const metadata = Reflect.getMetadata(EXCEL_METADATA_KEY, target.constructor) || {
8
- fields: new Map()
9
- };
10
- metadata.fields.set(propertyKey, {
11
- name,
12
- type,
13
- index: options.index,
14
- childType: decoratorOptions.childType
15
- });
16
- Reflect.defineMetadata(EXCEL_METADATA_KEY, metadata, target.constructor);
17
- };
18
- };
19
- }
20
- const Excel = {
21
- Text: createDecorator('text'),
22
- Date: createDecorator('date'),
23
- Number: createDecorator('number'),
24
- Boolean: createDecorator('boolean'),
25
- Array: createDecorator('array'),
26
- Type: (name, childType, options = {}) => createDecorator('type', { childType })(name, options),
27
- };
28
- function getExcelMetadata(target) {
29
- return Reflect.getMetadata(EXCEL_METADATA_KEY, target);
30
- }
31
- function getHeaders(target) {
32
- const metadata = getExcelMetadata(target);
33
- if (!metadata)
34
- return [];
35
- const fields = Array.from(metadata.fields.entries())
36
- .map(([key, options]) => ({ key, ...options }))
37
- .sort((a, b) => (a.index ?? 999) - (b.index ?? 999));
38
- return fields.map(field => field.name);
39
- }
40
- function getFields(target, caseStyle = 'camel') {
41
- const metadata = getExcelMetadata(target);
42
- if (!metadata)
43
- return [];
44
- const fields = Array.from(metadata.fields.keys());
45
- if (caseStyle === 'snake') {
46
- return fields.map(field => field.replace(/([A-Z])/g, '_$1').toLowerCase());
47
- }
48
- return fields;
49
- }
50
- function getFlattenFieldAnnotations(target, prefix = '', propertyPrefix = '') {
51
- const metadata = getExcelMetadata(target);
52
- const result = {};
53
- if (metadata) {
54
- metadata.fields.forEach((options, key) => {
55
- const fieldName = prefix ? `${prefix}_${options.name}` : options.name;
56
- const propertyPath = propertyPrefix ? `${propertyPrefix}.${key}` : key;
57
- if (options.type === 'type' && options.childType) {
58
- const nestedFields = getFlattenFieldAnnotations(options.childType(), fieldName, propertyPath);
59
- Object.assign(result, nestedFields);
60
- }
61
- else {
62
- result[propertyPath] = {
63
- ...options,
64
- name: fieldName
65
- };
66
- }
67
- });
68
- }
69
- return result;
70
- }
71
-
72
- const EXCEL_EPOCH = new Date(1899, 11, 30);
73
- class ExcelConverter {
74
- fromExcelMany(records) {
75
- return records.map(record => this.fromExcel(record));
76
- }
77
- toExcelMany(models) {
78
- return models.map(model => this.toExcel(model));
79
- }
80
- }
81
- class DefaultExcelConverter extends ExcelConverter {
82
- Entity;
83
- constructor(Entity) {
84
- super();
85
- this.Entity = Entity;
86
- }
87
- fromExcel(record) {
88
- const annotations = getFlattenFieldAnnotations(this.Entity);
89
- const instance = new this.Entity();
90
- Object.entries(annotations).forEach(([propertyKey, options]) => {
91
- const value = record[options.name];
92
- const convertedValue = this.convertValue(value, options.type);
93
- const parts = propertyKey.split('.');
94
- if (parts.length === 1) {
95
- instance[propertyKey] = convertedValue;
96
- }
97
- else {
98
- let current = instance;
99
- for (let i = 0; i < parts.length - 1; i++) {
100
- if (!current[parts[i]]) {
101
- current[parts[i]] = {};
102
- }
103
- current = current[parts[i]];
104
- }
105
- current[parts[parts.length - 1]] = convertedValue;
106
- }
107
- });
108
- return instance;
109
- }
110
- convertValue(value, type) {
111
- switch (type) {
112
- case 'date':
113
- return this.excelDateToJsDate(value);
114
- case 'number':
115
- return this.toNumber(value);
116
- case 'boolean':
117
- return this.toBoolean(value);
118
- case 'array':
119
- return this.toArray(value);
120
- default:
121
- return value;
122
- }
123
- }
124
- toExcel(model) {
125
- const annotations = getFlattenFieldAnnotations(this.Entity);
126
- const record = {};
127
- Object.entries(annotations).forEach(([propertyKey, options]) => {
128
- const value = this.getNestedValue(model, propertyKey);
129
- switch (options.type) {
130
- case 'date':
131
- record[options.name] = this.jsDateToExcelDate(value);
132
- break;
133
- case 'boolean':
134
- record[options.name] = value === undefined || value === null ? '' : (value ? 'TRUE' : 'FALSE');
135
- break;
136
- case 'array':
137
- record[options.name] = Array.isArray(value) ? value.join(',') : '';
138
- break;
139
- case 'number':
140
- record[options.name] = value === undefined || value === null ? '' : value;
141
- break;
142
- default:
143
- record[options.name] = value ?? '';
144
- }
145
- });
146
- return record;
147
- }
148
- getNestedValue(obj, path) {
149
- if (obj && obj.hasOwnProperty(path)) {
150
- return obj[path];
151
- }
152
- const parts = path.split('.');
153
- let current = obj;
154
- for (const part of parts) {
155
- if (current && typeof current === 'object' && part in current) {
156
- current = current[part];
157
- }
158
- else {
159
- return undefined;
160
- }
161
- }
162
- return current;
163
- }
164
- excelDateToJsDate(excelDate) {
165
- if (!excelDate)
166
- return null;
167
- if (excelDate instanceof Date)
168
- return excelDate;
169
- if (typeof excelDate === 'string' && excelDate.includes('-')) {
170
- return new Date(excelDate);
171
- }
172
- const serialNumber = Number(excelDate);
173
- if (!isNaN(serialNumber)) {
174
- const date = new Date(EXCEL_EPOCH);
175
- date.setDate(date.getDate() + serialNumber);
176
- return date;
177
- }
178
- return null;
179
- }
180
- jsDateToExcelDate(date) {
181
- if (!date)
182
- return '';
183
- return date.toISOString();
184
- }
185
- toNumber(value) {
186
- if (value === '' || value === null || value === undefined)
187
- return null;
188
- const num = Number(value);
189
- return isNaN(num) ? null : num;
190
- }
191
- toBoolean(value) {
192
- if (typeof value === 'boolean')
193
- return value;
194
- if (typeof value === 'string') {
195
- return value.toUpperCase() === 'TRUE' || value === '1';
196
- }
197
- return Boolean(value);
198
- }
199
- toArray(value) {
200
- if (Array.isArray(value))
201
- return value;
202
- if (typeof value === 'string' && value) {
203
- return value.split(',').map(v => v.trim());
204
- }
205
- return [];
206
- }
207
- }
208
- function getConverter(Entity) {
209
- return new DefaultExcelConverter(Entity);
210
- }
211
-
212
- /**
213
- * Generated bundle index. Do not edit.
214
- */
215
-
216
- export { DefaultExcelConverter, Excel, ExcelConverter, getConverter, getExcelMetadata, getFields, getFlattenFieldAnnotations, getHeaders };
217
- //# sourceMappingURL=nx-ddd-excel.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nx-ddd-excel.mjs","sources":["../tmp-esm2022/decorators/excel.decorators.js","../tmp-esm2022/converter/excel.converter.js","../tmp-esm2022/nx-ddd-excel.js"],"sourcesContent":["import 'reflect-metadata';\nconst EXCEL_METADATA_KEY = Symbol('excel');\nfunction createDecorator(type, decoratorOptions = {}) {\n return function (name, options = {}) {\n return function (target, propertyKey) {\n const metadata = Reflect.getMetadata(EXCEL_METADATA_KEY, target.constructor) || {\n fields: new Map()\n };\n metadata.fields.set(propertyKey, {\n name,\n type,\n index: options.index,\n childType: decoratorOptions.childType\n });\n Reflect.defineMetadata(EXCEL_METADATA_KEY, metadata, target.constructor);\n };\n };\n}\nexport const Excel = {\n Text: createDecorator('text'),\n Date: createDecorator('date'),\n Number: createDecorator('number'),\n Boolean: createDecorator('boolean'),\n Array: createDecorator('array'),\n Type: (name, childType, options = {}) => createDecorator('type', { childType })(name, options),\n};\nexport function getExcelMetadata(target) {\n return Reflect.getMetadata(EXCEL_METADATA_KEY, target);\n}\nexport function getHeaders(target) {\n const metadata = getExcelMetadata(target);\n if (!metadata)\n return [];\n const fields = Array.from(metadata.fields.entries())\n .map(([key, options]) => ({ key, ...options }))\n .sort((a, b) => (a.index ?? 999) - (b.index ?? 999));\n return fields.map(field => field.name);\n}\nexport function getFields(target, caseStyle = 'camel') {\n const metadata = getExcelMetadata(target);\n if (!metadata)\n return [];\n const fields = Array.from(metadata.fields.keys());\n if (caseStyle === 'snake') {\n return fields.map(field => field.replace(/([A-Z])/g, '_$1').toLowerCase());\n }\n return fields;\n}\nexport function getFlattenFieldAnnotations(target, prefix = '', propertyPrefix = '') {\n const metadata = getExcelMetadata(target);\n const result = {};\n if (metadata) {\n metadata.fields.forEach((options, key) => {\n const fieldName = prefix ? `${prefix}_${options.name}` : options.name;\n const propertyPath = propertyPrefix ? `${propertyPrefix}.${key}` : key;\n if (options.type === 'type' && options.childType) {\n const nestedFields = getFlattenFieldAnnotations(options.childType(), fieldName, propertyPath);\n Object.assign(result, nestedFields);\n }\n else {\n result[propertyPath] = {\n ...options,\n name: fieldName\n };\n }\n });\n }\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZXhjZWwvc3JjL2xpYi9kZWNvcmF0b3JzL2V4Y2VsLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQWEzQyxTQUFTLGVBQWUsQ0FBQyxJQUErQixFQUFFLG1CQUE4QyxFQUFFO0lBQ3hHLE9BQU8sVUFBVSxJQUFZLEVBQUUsVUFBOEIsRUFBRTtRQUM3RCxPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CO1lBQy9DLE1BQU0sUUFBUSxHQUFrQixPQUFPLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDN0YsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFO2FBQ2xCLENBQUM7WUFFRixRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7Z0JBQy9CLElBQUk7Z0JBQ0osSUFBSTtnQkFDSixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTO2FBQ3RDLENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO0lBQzdCLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO0lBQzdCLE1BQU0sRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDO0lBQ2pDLE9BQU8sRUFBRSxlQUFl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Q25CLFNBQVMsRUFDVCxZQUFZLENBQ2IsQ0FBQztnQkFDRixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN0QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHO29CQUNyQixHQUFHLE9BQU87b0JBQ1YsSUFBSSxFQUFFLFNBQVM7aUJBQ2hCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5cbmNvbnN0IEVYQ0VMX01FVEFEQVRBX0tFWSA9IFN5bWJvbCgnZXhjZWwnKTtcblxuZXhwb3J0IGludGVyZmFjZSBFeGNlbEZpZWxkT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogJ3RleHQnIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAnYm9vbGVhbicgfCAnYXJyYXknIHwgJ3R5cGUnO1xuICBpbmRleD86IG51bWJlcjtcbiAgY2hpbGRUeXBlPzogKCkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VsTWV0YWRhdGEge1xuICBmaWVsZHM6IE1hcDxzdHJpbmcsIEV4Y2VsRmllbGRPcHRpb25zPjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjb3JhdG9yKHR5cGU6IEV4Y2VsRmllbGRPcHRpb25zWyd0eXBlJ10sIGRlY29yYXRvck9wdGlvbnM6IHsgY2hpbGRUeXBlPzogKCkgPT4gYW55IH0gPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gKG5hbWU6IHN0cmluZywgb3B0aW9uczogeyBpbmRleD86IG51bWJlciB9ID0ge30pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YTogRXhjZWxNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoRVhDRUxfTUVUQURBVEFfS0VZLCB0YXJnZXQuY29uc3RydWN0b3IpIHx8IHtcbiAgICAgICAgZmllbGRzOiBuZXcgTWFwKClcbiAgICAgIH07XG4gICAgICBcbiAgICAgIG1ldGFkYXRhLmZpZWxkcy5zZXQocHJvcGVydHlLZXksIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaW5kZXg6IG9wdGlvbnMuaW5kZXgsXG4gICAgICAgIGNoaWxkVHlwZTogZGVjb3JhdG9yT3B0aW9ucy5jaGlsZFR5cGVcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKEVYQ0VMX01FVEFEQVRBX0tFWSwgbWV0YWRhdGEsIHRhcmdldC5jb25zdHJ1Y3Rvcik7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEV4Y2VsID0ge1xuICBUZXh0OiBjcmVhdGVEZWNvcmF0b3IoJ3RleHQnKSxcbiAgRGF0ZTogY3JlYXRlRGVjb3JhdG9yKCdkYXRlJyksXG4gIE51bWJlcjogY3JlYXRlRGVjb3JhdG9yKCdudW1iZXInKSxcbiAgQm9vbGVhbjogY3JlYXRlRGVjb3JhdG9yKCdib29sZWFuJyksXG4gIEFycmF5OiBjcmVhdGVEZWNvcmF0b3IoJ2FycmF5JyksXG4gIFR5cGU6IChuYW1lOiBzdHJpbmcsIGNoaWxkVHlwZTogKCkgPT4gYW55LCBvcHRpb25zOiB7IGluZGV4PzogbnVtYmVyIH0gPSB7fSkgPT4gXG4gICAgY3JlYXRlRGVjb3JhdG9yKCd0eXBlJywgeyBjaGlsZFR5cGUgfSkobmFtZSwgb3B0aW9ucyksXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhjZWxNZXRhZGF0YSh0YXJnZXQ6IGFueSk6IEV4Y2VsTWV0YWRhdGEgfCB1bmRlZmluZWQge1xuICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShFWENFTF9NRVRBREFUQV9LRVksIHRhcmdldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJzKHRhcmdldDogYW55KTogc3RyaW5nW10ge1xuICBjb25zdCBtZXRhZGF0YSA9IGdldEV4Y2VsTWV0YWRhdGEodGFyZ2V0KTtcbiAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuIFtdO1xuICBcbiAgY29uc3QgZmllbGRzID0gQXJyYXkuZnJvbShtZXRhZGF0YS5maWVsZHMuZW50cmllcygpKVxuICAgIC5tYXAoKFtrZXksIG9wdGlvbnNdKSA9PiAoeyBrZXksIC4uLm9wdGlvbnMgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IChhLmluZGV4ID8/IDk5OSkgLSAoYi5pbmRleCA/PyA5OTkpKTtcbiAgXG4gIHJldHVybiBmaWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLm5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRzKHRhcmdldDogYW55LCBjYXNlU3R5bGU6ICdjYW1lbCcgfCAnc25ha2UnID0gJ2NhbWVsJyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRFeGNlbE1ldGFkYXRhKHRhcmdldCk7XG4gIGlmICghbWV0YWRhdGEpIHJldHVybiBbXTtcbiAgXG4gIGNvbnN0IGZpZWxkcyA9IEFycmF5LmZyb20obWV0YWRhdGEuZmllbGRzLmtleXMoKSk7XG4gIFxuICBpZiAoY2FzZVN0eWxlID09PSAnc25ha2UnKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQucmVwbGFjZSgvKFtBLVpdKS9nLCAnXyQxJykudG9Mb3dlckNhc2UoKSk7XG4gIH1cbiAgXG4gIHJldHVybiBmaWVsZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGbGF0dGVuRmllbGRBbm5vdGF0aW9ucyh0YXJnZXQ6IGFueSwgcHJlZml4ID0gJycsIHByb3BlcnR5UHJlZml4ID0gJycpOiBSZWNvcmQ8c3RyaW5nLCBFeGNlbEZpZWxkT3B0aW9ucz4ge1xuICBjb25zdCBtZXRhZGF0YSA9IGdldEV4Y2VsTWV0YWRhdGEodGFyZ2V0KTtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBFeGNlbEZpZWxkT3B0aW9ucz4gPSB7fTtcbiAgXG4gIGlmIChtZXRhZGF0YSkge1xuICAgIG1ldGFkYXRhLmZpZWxkcy5mb3JFYWNoKChvcHRpb25zLCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHByZWZpeCA/IGAke3ByZWZpeH1fJHtvcHRpb25zLm5hbWV9YCA6IG9wdGlvbnMubmFtZTtcbiAgICAgIGNvbnN0IHByb3BlcnR5UGF0aCA9IHByb3BlcnR5UHJlZml4ID8gYCR7cHJvcGVydHlQcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBcbiAgICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICd0eXBlJyAmJiBvcHRpb25zLmNoaWxkVHlwZSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRGaWVsZHMgPSBnZXRGbGF0dGVuRmllbGRBbm5vdGF0aW9ucyhcbiAgICAgICAgICBvcHRpb25zLmNoaWxkVHlwZSgpLCBcbiAgICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgICAgcHJvcGVydHlQYXRoXG4gICAgICAgICk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCBuZXN0ZWRGaWVsZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W3Byb3BlcnR5UGF0aF0gPSB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBuYW1lOiBmaWVsZE5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgcmV0dXJuIHJlc3VsdDtcbn0iXX0=","import { getFlattenFieldAnnotations } from '../decorators';\nconst EXCEL_EPOCH = new Date(1899, 11, 30);\nexport class ExcelConverter {\n fromExcelMany(records) {\n return records.map(record => this.fromExcel(record));\n }\n toExcelMany(models) {\n return models.map(model => this.toExcel(model));\n }\n}\nexport class DefaultExcelConverter extends ExcelConverter {\n Entity;\n constructor(Entity) {\n super();\n this.Entity = Entity;\n }\n fromExcel(record) {\n const annotations = getFlattenFieldAnnotations(this.Entity);\n const instance = new this.Entity();\n Object.entries(annotations).forEach(([propertyKey, options]) => {\n const value = record[options.name];\n const convertedValue = this.convertValue(value, options.type);\n const parts = propertyKey.split('.');\n if (parts.length === 1) {\n instance[propertyKey] = convertedValue;\n }\n else {\n let current = instance;\n for (let i = 0; i < parts.length - 1; i++) {\n if (!current[parts[i]]) {\n current[parts[i]] = {};\n }\n current = current[parts[i]];\n }\n current[parts[parts.length - 1]] = convertedValue;\n }\n });\n return instance;\n }\n convertValue(value, type) {\n switch (type) {\n case 'date':\n return this.excelDateToJsDate(value);\n case 'number':\n return this.toNumber(value);\n case 'boolean':\n return this.toBoolean(value);\n case 'array':\n return this.toArray(value);\n default:\n return value;\n }\n }\n toExcel(model) {\n const annotations = getFlattenFieldAnnotations(this.Entity);\n const record = {};\n Object.entries(annotations).forEach(([propertyKey, options]) => {\n const value = this.getNestedValue(model, propertyKey);\n switch (options.type) {\n case 'date':\n record[options.name] = this.jsDateToExcelDate(value);\n break;\n case 'boolean':\n record[options.name] = value === undefined || value === null ? '' : (value ? 'TRUE' : 'FALSE');\n break;\n case 'array':\n record[options.name] = Array.isArray(value) ? value.join(',') : '';\n break;\n case 'number':\n record[options.name] = value === undefined || value === null ? '' : value;\n break;\n default:\n record[options.name] = value ?? '';\n }\n });\n return record;\n }\n getNestedValue(obj, path) {\n if (obj && obj.hasOwnProperty(path)) {\n return obj[path];\n }\n const parts = path.split('.');\n let current = obj;\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part];\n }\n else {\n return undefined;\n }\n }\n return current;\n }\n excelDateToJsDate(excelDate) {\n if (!excelDate)\n return null;\n if (excelDate instanceof Date)\n return excelDate;\n if (typeof excelDate === 'string' && excelDate.includes('-')) {\n return new Date(excelDate);\n }\n const serialNumber = Number(excelDate);\n if (!isNaN(serialNumber)) {\n const date = new Date(EXCEL_EPOCH);\n date.setDate(date.getDate() + serialNumber);\n return date;\n }\n return null;\n }\n jsDateToExcelDate(date) {\n if (!date)\n return '';\n return date.toISOString();\n }\n toNumber(value) {\n if (value === '' || value === null || value === undefined)\n return null;\n const num = Number(value);\n return isNaN(num) ? null : num;\n }\n toBoolean(value) {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string') {\n return value.toUpperCase() === 'TRUE' || value === '1';\n }\n return Boolean(value);\n }\n toArray(value) {\n if (Array.isArray(value))\n return value;\n if (typeof value === 'string' && value) {\n return value.split(',').map(v => v.trim());\n }\n return [];\n }\n}\nexport function getConverter(Entity) {\n return new DefaultExcelConverter(Entity);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9leGNlbC9zcmMvbGliL2NvbnZlcnRlci9leGNlbC5jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNELE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFNM0MsTUFBTSxPQUFnQixjQUFjO0lBSWxDLGFBQWEsQ0FBQyxPQUFzQjtRQUNsQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFXO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXlCLFNBQVEsY0FBaUI7SUFDekM7SUFBcEIsWUFBb0IsTUFBZTtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURVLFdBQU0sR0FBTixNQUFNLENBQVM7SUFFbkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFtQjtRQUMzQixNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFTLENBQUM7UUFFMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQzdELE1B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QUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQVU7UUFDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFJLE1BQWU7SUFDN0MsT0FBTyxJQUFJLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRGbGF0dGVuRmllbGRBbm5vdGF0aW9ucyB9IGZyb20gJy4uL2RlY29yYXRvcnMnO1xuXG5jb25zdCBFWENFTF9FUE9DSCA9IG5ldyBEYXRlKDE4OTksIDExLCAzMCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZWxSZWNvcmQge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFeGNlbENvbnZlcnRlcjxUPiB7XG4gIGFic3RyYWN0IGZyb21FeGNlbChyZWNvcmQ6IEV4Y2VsUmVjb3JkKTogVDtcbiAgYWJzdHJhY3QgdG9FeGNlbChtb2RlbDogVCk6IEV4Y2VsUmVjb3JkO1xuICBcbiAgZnJvbUV4Y2VsTWFueShyZWNvcmRzOiBFeGNlbFJlY29yZFtdKTogVFtdIHtcbiAgICByZXR1cm4gcmVjb3Jkcy5tYXAocmVjb3JkID0+IHRoaXMuZnJvbUV4Y2VsKHJlY29yZCkpO1xuICB9XG4gIFxuICB0b0V4Y2VsTWFueShtb2RlbHM6IFRbXSk6IEV4Y2VsUmVjb3JkW10ge1xuICAgIHJldHVybiBtb2RlbHMubWFwKG1vZGVsID0+IHRoaXMudG9FeGNlbChtb2RlbCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0RXhjZWxDb252ZXJ0ZXI8VD4gZXh0ZW5kcyBFeGNlbENvbnZlcnRlcjxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgRW50aXR5OiBUeXBlPFQ+KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBcbiAgZnJvbUV4Y2VsKHJlY29yZDogRXhjZWxSZWNvcmQpOiBUIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGdldEZsYXR0ZW5GaWVsZEFubm90YXRpb25zKHRoaXMuRW50aXR5KTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0aGlzLkVudGl0eSgpIGFzIGFueTtcbiAgICBcbiAgICBPYmplY3QuZW50cmllcyhhbm5vdGF0aW9ucykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBvcHRpb25zXSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSByZWNvcmRbb3B0aW9ucy5uYW1lXTtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIG9wdGlvbnMudHlwZSk7XG4gICAgICBcbiAgICAgIGNvbnN0IHBhcnRzID0gcHJvcGVydHlLZXkuc3BsaXQoJy4nKTtcbiAgICAgIFxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBpbnN0YW5jZVtwcm9wZXJ0eUtleV0gPSBjb252ZXJ0ZWRWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjdXJyZW50ID0gaW5zdGFuY2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFjdXJyZW50W3BhcnRzW2ldXSkge1xuICAgICAgICAgICAgY3VycmVudFtwYXJ0c1tpXV0gPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydHNbaV1dO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRbcGFydHNbcGFydHMubGVuZ3RoIC0gMV1dID0gY29udmVydGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIFxuICBwcml2YXRlIGNvbnZlcnRWYWx1ZSh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcpOiBhbnkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmV4Y2VsRGF0ZVRvSnNEYXRlKHZhbHVlKTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiB0aGlzLnRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gdGhpcy50b0Jvb2xlYW4odmFsdWUpO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gdGhpcy50b0FycmF5KHZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgXG4gIFxuICB0b0V4Y2VsKG1vZGVsOiBUKTogRXhjZWxSZWNvcmQge1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gZ2V0RmxhdHRlbkZpZWxkQW5ub3RhdGlvbnModGhpcy5FbnRpdHkpO1xuICAgIGNvbnN0IHJlY29yZDogRXhjZWxSZWNvcmQgPSB7fTtcbiAgICBcbiAgICBPYmplY3QuZW50cmllcyhhbm5vdGF0aW9ucykuZm9yRWFjaCgoW3Byb3BlcnR5S2V5LCBvcHRpb25zXSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG1vZGVsLCBwcm9wZXJ0eUtleSk7XG4gICAgICBcbiAgICAgIHN3aXRjaCAob3B0aW9ucy50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIHJlY29yZFtvcHRpb25zLm5hbWVdID0gdGhpcy5qc0RhdGVUb0V4Y2VsRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIHJlY29yZFtvcHRpb25zLm5hbWVdID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCA/ICcnIDogKHZhbHVlID8gJ1RSVUUnIDogJ0ZBTFNFJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgICByZWNvcmRbb3B0aW9ucy5uYW1lXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignLCcpIDogJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgcmVjb3JkW29wdGlvbnMubmFtZV0gPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWNvcmRbb3B0aW9ucy5uYW1lXSA9IHZhbHVlID8/ICcnO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiByZWNvcmQ7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKG9iaiAmJiBvYmouaGFzT3duUHJvcGVydHkocGF0aCkpIHtcbiAgICAgIHJldHVybiBvYmpbcGF0aF07XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIFxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgaWYgKGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnICYmIHBhcnQgaW4gY3VycmVudCkge1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG4gIFxuICBwcml2YXRlIGV4Y2VsRGF0ZVRvSnNEYXRlKGV4Y2VsRGF0ZTogYW55KTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghZXhjZWxEYXRlKSByZXR1cm4gbnVsbDtcbiAgICBcbiAgICBpZiAoZXhjZWxEYXRlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGV4Y2VsRGF0ZTtcbiAgICBcbiAgICBpZiAodHlwZW9mIGV4Y2VsRGF0ZSA9PT0gJ3N0cmluZycgJiYgZXhjZWxEYXRlLmluY2x1ZGVzKCctJykpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShleGNlbERhdGUpO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBzZXJpYWxOdW1iZXIgPSBOdW1iZXIoZXhjZWxEYXRlKTtcbiAgICBpZiAoIWlzTmFOKHNlcmlhbE51bWJlcikpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShFWENFTF9FUE9DSCk7XG4gICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzZXJpYWxOdW1iZXIpO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIFxuICBwcml2YXRlIGpzRGF0ZVRvRXhjZWxEYXRlKGRhdGU6IERhdGUgfCBudWxsKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICBpZiAoIWRhdGUpIHJldHVybiAnJztcbiAgICBcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xuICB9XG4gIFxuICBwcml2YXRlIHRvTnVtYmVyKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7XG4gICAgcmV0dXJuIGlzTmFOKG51bSkgPyBudWxsIDogbnVtO1xuICB9XG4gIFxuICBwcml2YXRlIHRvQm9vbGVhbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsdWU7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnVFJVRScgfHwgdmFsdWUgPT09ICcxJztcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xuICB9XG4gIFxuICBwcml2YXRlIHRvQXJyYXkodmFsdWU6IGFueSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKHYgPT4gdi50cmltKCkpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnZlcnRlcjxUPihFbnRpdHk6IFR5cGU8VD4pOiBFeGNlbENvbnZlcnRlcjxUPiB7XG4gIHJldHVybiBuZXcgRGVmYXVsdEV4Y2VsQ29udmVydGVyKEVudGl0eSk7XG59Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWV4Y2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9leGNlbC9zcmMvbGliL254LWRkZC1leGNlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
package/impl/index.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import { ExcelService } from '@nx-ddd/excel';
2
- import * as i0 from '@angular/core';
3
-
4
- declare class ExcelServiceImpl implements ExcelService {
5
- readSheet(path: string, sheetName: string): Promise<any[]>;
6
- writeSheet(path: string, sheetName: string, records: any[], headers: string[]): Promise<void>;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcelServiceImpl, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<ExcelServiceImpl>;
9
- }
10
-
11
- export { ExcelServiceImpl };
package/index.d.ts DELETED
@@ -1,67 +0,0 @@
1
- import { Type } from '@angular/core';
2
-
3
- interface ExcelFieldOptions {
4
- name: string;
5
- type: 'text' | 'date' | 'number' | 'boolean' | 'array' | 'type';
6
- index?: number;
7
- childType?: () => any;
8
- }
9
- interface ExcelMetadata {
10
- fields: Map<string, ExcelFieldOptions>;
11
- }
12
- declare const Excel: {
13
- Text: (name: string, options?: {
14
- index?: number;
15
- }) => (target: any, propertyKey: string) => void;
16
- Date: (name: string, options?: {
17
- index?: number;
18
- }) => (target: any, propertyKey: string) => void;
19
- Number: (name: string, options?: {
20
- index?: number;
21
- }) => (target: any, propertyKey: string) => void;
22
- Boolean: (name: string, options?: {
23
- index?: number;
24
- }) => (target: any, propertyKey: string) => void;
25
- Array: (name: string, options?: {
26
- index?: number;
27
- }) => (target: any, propertyKey: string) => void;
28
- Type: (name: string, childType: () => any, options?: {
29
- index?: number;
30
- }) => (target: any, propertyKey: string) => void;
31
- };
32
- declare function getExcelMetadata(target: any): ExcelMetadata | undefined;
33
- declare function getHeaders(target: any): string[];
34
- declare function getFields(target: any, caseStyle?: 'camel' | 'snake'): string[];
35
- declare function getFlattenFieldAnnotations(target: any, prefix?: string, propertyPrefix?: string): Record<string, ExcelFieldOptions>;
36
-
37
- interface ExcelRecord {
38
- [key: string]: any;
39
- }
40
- declare abstract class ExcelConverter<T> {
41
- abstract fromExcel(record: ExcelRecord): T;
42
- abstract toExcel(model: T): ExcelRecord;
43
- fromExcelMany(records: ExcelRecord[]): T[];
44
- toExcelMany(models: T[]): ExcelRecord[];
45
- }
46
- declare class DefaultExcelConverter<T> extends ExcelConverter<T> {
47
- private Entity;
48
- constructor(Entity: Type<T>);
49
- fromExcel(record: ExcelRecord): T;
50
- private convertValue;
51
- toExcel(model: T): ExcelRecord;
52
- private getNestedValue;
53
- private excelDateToJsDate;
54
- private jsDateToExcelDate;
55
- private toNumber;
56
- private toBoolean;
57
- private toArray;
58
- }
59
- declare function getConverter<T>(Entity: Type<T>): ExcelConverter<T>;
60
-
61
- interface ExcelService {
62
- readSheet(path: string, sheetName: string): Promise<any[]>;
63
- writeSheet(path: string, sheetName: string, records: any[], headers: string[]): Promise<void>;
64
- }
65
-
66
- export { DefaultExcelConverter, Excel, ExcelConverter, getConverter, getExcelMetadata, getFields, getFlattenFieldAnnotations, getHeaders };
67
- export type { ExcelFieldOptions, ExcelMetadata, ExcelRecord, ExcelService };
package/infra/index.d.ts DELETED
@@ -1,35 +0,0 @@
1
- import * as _nx_ddd_core from '@nx-ddd/core';
2
- import * as i0 from '@angular/core';
3
- import { Type } from '@angular/core';
4
- import { ExcelConverter, ExcelService } from '@nx-ddd/excel';
5
-
6
- interface ExcelRepositoryConfig {
7
- path: string;
8
- sheetName?: string;
9
- converter?: ExcelConverter<any>;
10
- headers?: string[];
11
- }
12
- declare abstract class BaseExcelRepository<T> {
13
- protected abstract readonly path: string;
14
- protected abstract readonly sheetName: string;
15
- protected abstract readonly converter: ExcelConverter<T>;
16
- protected abstract readonly headers: string[];
17
- protected abstract readonly excelService: ExcelService;
18
- list(): Promise<T[]>;
19
- saveMany(entities: T[]): Promise<void>;
20
- }
21
- declare class ExcelRepository<T> extends BaseExcelRepository<T> {
22
- readonly path: string;
23
- readonly sheetName: string;
24
- readonly converter: ExcelConverter<T>;
25
- readonly headers: string[];
26
- readonly excelService: ExcelService;
27
- constructor(path: string, sheetName: string, converter: ExcelConverter<T>, headers: string[], excelService: ExcelService);
28
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcelRepository<any>, never>;
29
- static ɵprov: i0.ɵɵInjectableDeclaration<ExcelRepository<any>>;
30
- }
31
- declare const EXCEL_REPOSITORY: _nx_ddd_core.DiToken<ExcelRepository<any>>;
32
- declare function getExcelRepository<T>(Entity: Type<T>, config: ExcelRepositoryConfig): ExcelRepository<T>;
33
-
34
- export { BaseExcelRepository, EXCEL_REPOSITORY, ExcelRepository, getExcelRepository };
35
- export type { ExcelRepositoryConfig };
package/tokens/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import * as _angular_core from '@angular/core';
2
- import * as _nx_ddd_core from '@nx-ddd/core';
3
- import { ExcelService } from '@nx-ddd/excel';
4
-
5
- declare const EXCEL_SERVICE_DI: _nx_ddd_core.DiToken<ExcelService>;
6
- declare const EXCEL_SERVICE: _angular_core.InjectionToken<ExcelService>;
7
-
8
- export { EXCEL_SERVICE, EXCEL_SERVICE_DI };