@nx-ddd/spreadsheet 19.9.0 → 19.12.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.
@@ -1,24 +1,32 @@
1
1
  import dayjs from 'dayjs';
2
+ import { fromSheetDate, fromSheetBoolean, fromSheetText, fromSheetNumber, toSheetBoolean } from './sheet-type-converters';
3
+ import { fromSheet } from './from-sheet';
4
+ import { toSheet } from './to-sheet';
2
5
  export interface SheetConverter<T> {
3
6
  fromSheet(record: any): T;
4
7
  fromSheetMany(records: any[]): T[];
5
8
  toSheet(model: T): any;
6
9
  toSheetMany(models: T[]): any[];
7
10
  }
11
+ /**
12
+ * シートデータ変換ユーティリティクラス
13
+ * 後方互換性のため静的メソッドとして各変換関数を提供
14
+ */
8
15
  export declare class SheetUtils {
9
- static fromSheetDate(serial: number | null): Date | null;
10
- static fromSheetBoolean(value: any): boolean;
11
- static fromSheetText(value: any): string | null;
12
- static fromSheetNumber(value: any): number | null;
16
+ static fromSheetDate: typeof fromSheetDate;
17
+ static fromSheetBoolean: typeof fromSheetBoolean;
18
+ static fromSheetText: typeof fromSheetText;
19
+ static fromSheetNumber: typeof fromSheetNumber;
13
20
  static toSheetDate(date: dayjs.Dayjs | Date | null): Date | null;
14
- static toSheetBoolean(value: boolean): string;
15
- static fromSheet<E, D extends object>(record: D, type: {
16
- new (): E;
17
- }): E;
18
- static toSheet<E, D extends object>(entity: E, type: {
19
- new (): E;
20
- }): D;
21
+ static toSheetBoolean: typeof toSheetBoolean;
22
+ static fromSheet: typeof fromSheet;
23
+ static toSheet: typeof toSheet;
21
24
  }
25
+ /**
26
+ * 型に基づくSheetConverterを取得
27
+ * @param type 変換対象のクラス型
28
+ * @returns SheetConverter インスタンス
29
+ */
22
30
  export declare function getConverter<T>(type: {
23
31
  new (): T;
24
32
  }): SheetConverter<T>;
@@ -2,287 +2,37 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SheetUtils = void 0;
4
4
  exports.getConverter = getConverter;
5
- const tslib_1 = require("tslib");
6
- const lodash_es_1 = require("lodash-es");
7
- const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
8
- const decorators_1 = require("../decorators");
5
+ const sheet_type_converters_1 = require("./sheet-type-converters");
6
+ const from_sheet_1 = require("./from-sheet");
7
+ const to_sheet_1 = require("./to-sheet");
8
+ /**
9
+ * シートデータ変換ユーティリティクラス
10
+ * 後方互換性のため静的メソッドとして各変換関数を提供
11
+ */
9
12
  class SheetUtils {
10
- static fromSheetDate(serial) {
11
- if (typeof serial !== 'number')
12
- return null;
13
- const excelEpoch = (0, dayjs_1.default)('1899-12-30');
14
- return excelEpoch.add(serial, 'day').toDate();
15
- }
16
- static fromSheetBoolean(value) {
17
- if (typeof value === 'boolean')
18
- return value;
19
- return value === 'TRUE';
20
- }
21
- static fromSheetText(value) {
22
- if (value === null || value === undefined)
23
- return null;
24
- return `${value}`;
25
- }
26
- static fromSheetNumber(value) {
27
- if (value === null || value === undefined || value === '')
28
- return null;
29
- // 数値の場合はそのまま返す
30
- if (typeof value === 'number')
31
- return value;
32
- // 文字列の場合は通貨記号や区切り文字を取り除いて変換
33
- if (typeof value === 'string') {
34
- // 通貨記号(¥,$など)、カンマ、スペース、その他の記号を削除
35
- const cleanedValue = value.replace(/[¥$,\s]/g, '');
36
- // 数値に変換を試みる
37
- const numValue = Number(cleanedValue);
38
- return !isNaN(numValue) ? numValue : null;
39
- }
40
- return null;
41
- }
42
13
  static toSheetDate(date) {
43
- if (!date)
44
- return null;
45
- if (dayjs_1.default.isDayjs(date))
46
- return date.toDate();
47
- return date;
48
- }
49
- static toSheetBoolean(value) {
50
- return value ? 'TRUE' : 'FALSE';
51
- }
52
- static fromSheet(record, type) {
53
- var _a, _b;
54
- // console.debug('fromSheet', record, type);
55
- // コンストラクタを使用してインスタンスを作成
56
- const instance = new type();
57
- // アノテーション取得
58
- const annotations = (0, decorators_1.getFlattenFieldAnnotations)(type);
59
- // ネストされたオブジェクトのマッピング情報を作成
60
- const nestedObjects = new Map();
61
- // まずはTypeアノテーションを持つフィールドをクラスから直接取得
62
- const typeAnnotations = ((_a = decorators_1.Sheet.getAnnotations(type)) === null || _a === void 0 ? void 0 : _a.filter(anno => anno.type === 'type')) || [];
63
- for (const typeAnno of typeAnnotations) {
64
- if (typeAnno.propName && typeAnno.childType) {
65
- nestedObjects.set(typeAnno.fieldName, { propName: typeAnno.propName, type: typeAnno.childType() });
66
- // ネストされたオブジェクトのインスタンスを作成
67
- instance[typeAnno.propName] = new (typeAnno.childType())();
68
- }
69
- }
70
- // シートデータのキーとアノテーションの対応マップを作成
71
- const keyToAnnotationMap = new Map();
72
- for (const [key, annotation] of Object.entries(annotations)) {
73
- if (annotation.type === 'type')
74
- continue; // タイプアノテーションはスキップ
75
- // fieldNameが未定義の場合はスキップ
76
- if (!annotation.fieldName)
77
- continue;
78
- // ネストされたプロパティの場合
79
- for (const [parentField, parentInfo] of nestedObjects.entries()) {
80
- const parentPrefix = `${parentField}_`;
81
- // console.debug('parentPrefix', parentPrefix, annotation.fieldName);
82
- if (annotation.fieldName.startsWith(parentPrefix)) {
83
- // シートのキー(例:プロフィール_名前)
84
- keyToAnnotationMap.set(annotation.fieldName, {
85
- annotation,
86
- isNested: true,
87
- parent: parentInfo.propName
88
- });
89
- break;
90
- }
91
- }
92
- // 通常のプロパティの場合
93
- if (!keyToAnnotationMap.has(annotation.fieldName)) {
94
- keyToAnnotationMap.set(annotation.fieldName, {
95
- annotation,
96
- isNested: false
97
- });
98
- }
99
- }
100
- // レコードの各キーを処理
101
- for (const [recordKey, recordValue] of Object.entries(record)) {
102
- // このレコードキーに対応するアノテーション情報を探す
103
- let annotationInfo = keyToAnnotationMap.get(recordKey);
104
- // 直接一致するものがなければ、ネストされたキーを探す
105
- if (!annotationInfo) {
106
- for (const [parentField, parentInfo] of nestedObjects.entries()) {
107
- // 例: プロフィール_名前 -> 名前
108
- if (recordKey.startsWith(`${parentField}_`)) {
109
- const childField = recordKey.substring(parentField.length + 1);
110
- // 子オブジェクトのクラスからアノテーションを取得
111
- const childAnnotations = (0, decorators_1.getFlattenFieldAnnotations)(parentInfo.type);
112
- // 子オブジェクトの対応するフィールドを探す
113
- for (const [childKey, childAnnotation] of Object.entries(childAnnotations)) {
114
- // childAnnotation.fieldNameが未定義の場合はスキップ
115
- if (!childAnnotation.fieldName)
116
- continue;
117
- if (childAnnotation.fieldName === childField) {
118
- annotationInfo = {
119
- annotation: childAnnotation,
120
- isNested: true,
121
- parent: parentInfo.propName
122
- };
123
- break;
124
- }
125
- }
126
- break;
127
- }
128
- }
129
- }
130
- if (!annotationInfo)
131
- continue; // 対応するアノテーションがない場合はスキップ
132
- const { annotation, isNested, parent } = annotationInfo;
133
- let convertedValue;
134
- // 値を型に応じて変換
135
- switch (annotation.type) {
136
- case 'number':
137
- convertedValue = this.fromSheetNumber(recordValue);
138
- break;
139
- case 'date':
140
- convertedValue = this.fromSheetDate(recordValue);
141
- break;
142
- case 'array':
143
- convertedValue = (_b = recordValue === null || recordValue === void 0 ? void 0 : recordValue.split(',')) !== null && _b !== void 0 ? _b : [];
144
- break;
145
- case 'boolean':
146
- convertedValue = this.fromSheetBoolean(recordValue);
147
- break;
148
- case 'text':
149
- convertedValue = this.fromSheetText(recordValue);
150
- break;
151
- default:
152
- convertedValue = recordValue || null;
153
- }
154
- // 値をインスタンスに設定
155
- if (isNested && parent) {
156
- // ネストされたプロパティの場合
157
- const propName = annotation.propName.includes('.')
158
- ? annotation.propName.split('.').pop() // ドットがある場合は最後の部分を取得
159
- : annotation.propName;
160
- if (propName && instance[parent]) {
161
- instance[parent][propName] = convertedValue;
162
- }
163
- }
164
- else {
165
- // 通常のプロパティの場合
166
- if (annotation.propName) {
167
- instance[annotation.propName] = convertedValue;
168
- }
169
- }
170
- }
171
- // テスト用にプレーンオブジェクトに変換
172
- const plainObject = {};
173
- // インスタンスの各プロパティをプレーンオブジェクトにコピー
174
- for (const key in instance) {
175
- if (Object.prototype.hasOwnProperty.call(instance, key)) {
176
- const value = instance[key];
177
- if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
178
- // ネストされたオブジェクトを処理
179
- const nestedPlain = {};
180
- for (const nestedKey in value) {
181
- if (Object.prototype.hasOwnProperty.call(value, nestedKey)) {
182
- nestedPlain[nestedKey] = value[nestedKey];
183
- }
184
- }
185
- plainObject[key] = nestedPlain;
186
- }
187
- else {
188
- plainObject[key] = value;
189
- }
190
- }
191
- }
192
- return plainObject;
193
- }
194
- static toSheet(entity, type) {
195
- var _a;
196
- // シンプルな実装に変更
197
- const result = {};
198
- // アノテーション取得
199
- const annotations = (0, decorators_1.getFlattenFieldAnnotations)(type);
200
- // Type フィールドの親名を抽出 (例: プロフィール名前 から プロフィール を抽出)
201
- const parentFieldMap = new Map();
202
- // まずはTypeアノテーションを持つフィールドをクラスから直接取得
203
- const typeAnnotations = ((_a = decorators_1.Sheet.getAnnotations(type)) === null || _a === void 0 ? void 0 : _a.filter(anno => anno.type === 'type')) || [];
204
- for (const typeAnno of typeAnnotations) {
205
- if (typeAnno.fieldName && typeAnno.propName) {
206
- parentFieldMap.set(typeAnno.fieldName, { parentJpName: typeAnno.fieldName, parentJsName: typeAnno.propName });
207
- }
208
- }
209
- // 各アノテーションを処理
210
- for (const [key, annotation] of Object.entries(annotations)) {
211
- // fieldNameが未定義の場合はスキップ
212
- if (!annotation.fieldName || !annotation.propName)
213
- continue;
214
- // キー名から特殊なケースを検出
215
- let fieldName = annotation.fieldName;
216
- let propPath = annotation.propName;
217
- // 親フィールド名を探す
218
- for (const [parentField, mapping] of parentFieldMap.entries()) {
219
- // キーが親名で始まる場合 (例: プロフィール名前)
220
- if (key.startsWith(parentField) && key !== parentField) {
221
- // プロフィール_名前 の形式に変更
222
- fieldName = `${mapping.parentJpName}_${fieldName}`;
223
- // profile.name の形式に変更
224
- propPath = `${mapping.parentJsName}.${propPath}`;
225
- break;
226
- }
227
- }
228
- // プロパティの値を取得
229
- const value = (0, lodash_es_1.get)(entity, propPath);
230
- // 値の型に応じた変換処理
231
- switch (annotation.type) {
232
- case 'number':
233
- if (value === undefined || value === null) {
234
- result[fieldName] = null;
235
- }
236
- else {
237
- result[fieldName] = isNaN(Number(value)) ? null : Number(value);
238
- }
239
- break;
240
- case 'date':
241
- if (value === undefined || value === null) {
242
- result[fieldName] = null;
243
- }
244
- else {
245
- result[fieldName] = this.toSheetDate(value);
246
- }
247
- break;
248
- case 'array':
249
- if (value === undefined || value === null) {
250
- result[fieldName] = undefined;
251
- }
252
- else {
253
- result[fieldName] = Array.isArray(value) ? value.join(',') : value;
254
- }
255
- break;
256
- case 'boolean':
257
- if (value === undefined || value === null) {
258
- result[fieldName] = undefined;
259
- }
260
- else {
261
- result[fieldName] = this.toSheetBoolean(value);
262
- }
263
- break;
264
- case 'text':
265
- case 'type':
266
- default:
267
- if (value === undefined || value === null) {
268
- result[fieldName] = undefined;
269
- }
270
- else {
271
- result[fieldName] = value;
272
- }
273
- break;
274
- }
275
- }
276
- return result;
14
+ return (0, sheet_type_converters_1.toSheetDate)(date);
277
15
  }
278
16
  }
279
17
  exports.SheetUtils = SheetUtils;
18
+ SheetUtils.fromSheetDate = sheet_type_converters_1.fromSheetDate;
19
+ SheetUtils.fromSheetBoolean = sheet_type_converters_1.fromSheetBoolean;
20
+ SheetUtils.fromSheetText = sheet_type_converters_1.fromSheetText;
21
+ SheetUtils.fromSheetNumber = sheet_type_converters_1.fromSheetNumber;
22
+ SheetUtils.toSheetBoolean = sheet_type_converters_1.toSheetBoolean;
23
+ SheetUtils.fromSheet = from_sheet_1.fromSheet;
24
+ SheetUtils.toSheet = to_sheet_1.toSheet;
25
+ /**
26
+ * 型に基づくSheetConverterを取得
27
+ * @param type 変換対象のクラス型
28
+ * @returns SheetConverter インスタンス
29
+ */
280
30
  function getConverter(type) {
281
31
  return {
282
- fromSheet: (record) => SheetUtils.fromSheet(record, type),
283
- fromSheetMany: (records) => records.map(record => SheetUtils.fromSheet(record, type)),
284
- toSheet: (model) => SheetUtils.toSheet(model, type),
285
- toSheetMany: (models) => models.map(model => SheetUtils.toSheet(model, type)),
32
+ fromSheet: (record) => (0, from_sheet_1.fromSheet)(record, type),
33
+ fromSheetMany: (records) => records.map((record) => (0, from_sheet_1.fromSheet)(record, type)),
34
+ toSheet: (model) => (0, to_sheet_1.toSheet)(model, type),
35
+ toSheetMany: (models) => models.map((model) => (0, to_sheet_1.toSheet)(model, type)),
286
36
  };
287
37
  }
288
38
  //# sourceMappingURL=converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/converter.ts"],"names":[],"mappings":";;;AAyCA,oCAQC;AAhDD,mEAOiC;AACjC,6CAAyC;AACzC,yCAAqC;AASrC;;;GAGG;AACH,MAAa,UAAU;IAKrB,MAAM,CAAC,WAAW,CAAC,IAA+B;QAChD,OAAO,IAAA,mCAAW,EAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;;AAPH,gCAWC;AAVQ,wBAAa,GAAG,qCAAa,CAAC;AAC9B,2BAAgB,GAAG,wCAAgB,CAAC;AACpC,wBAAa,GAAG,qCAAa,CAAC;AAC9B,0BAAe,GAAG,uCAAe,CAAC;AAIlC,yBAAc,GAAG,sCAAc,CAAC;AAChC,oBAAS,GAAG,sBAAS,CAAC;AACtB,kBAAO,GAAG,kBAAO,CAAC;AAG3B;;;;GAIG;AACH,SAAgB,YAAY,CAAI,IAAmB;IACjD,OAAO;QACL,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAA,sBAAS,EAAY,MAAM,EAAE,IAAI,CAAC;QACjE,aAAa,EAAE,CAAC,OAAiB,EAAE,EAAE,CACnC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAS,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC,KAAQ,EAAE,EAAE,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,IAAI,CAAC;QAC3C,WAAW,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ export interface FieldAnnotation {
2
+ type: 'number' | 'text' | 'date' | 'array' | 'boolean' | 'type';
3
+ fieldName: string;
4
+ propName: string;
5
+ childType?: () => any;
6
+ }
7
+ export interface AnnotationInfo {
8
+ annotation: FieldAnnotation;
9
+ isNested: boolean;
10
+ parent?: string;
11
+ }
12
+ /**
13
+ * ネストされたオブジェクトのマッピング情報を構築
14
+ */
15
+ export declare function buildNestedObjectsMap<E>(type: {
16
+ new (): E;
17
+ }, instance: E): Map<string, {
18
+ propName: string;
19
+ type: any;
20
+ }>;
21
+ /**
22
+ * アノテーションのキーマップを構築
23
+ */
24
+ export declare function buildKeyToAnnotationMap(annotations: Record<string, FieldAnnotation>, nestedObjects: Map<string, {
25
+ propName: string;
26
+ type: any;
27
+ }>): Map<string, AnnotationInfo>;
28
+ /**
29
+ * ネストされたレコードキーからアノテーション情報を探す
30
+ */
31
+ export declare function findNestedAnnotationInfo(recordKey: string, nestedObjects: Map<string, {
32
+ propName: string;
33
+ type: any;
34
+ }>): AnnotationInfo | undefined;
35
+ /**
36
+ * インスタンスをプレーンオブジェクトに変換
37
+ */
38
+ export declare function toPlainObject<E>(instance: E): E;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildNestedObjectsMap = buildNestedObjectsMap;
4
+ exports.buildKeyToAnnotationMap = buildKeyToAnnotationMap;
5
+ exports.findNestedAnnotationInfo = findNestedAnnotationInfo;
6
+ exports.toPlainObject = toPlainObject;
7
+ const decorators_1 = require("../decorators");
8
+ /**
9
+ * ネストされたオブジェクトのマッピング情報を構築
10
+ */
11
+ function buildNestedObjectsMap(type, instance) {
12
+ var _a;
13
+ const nestedObjects = new Map();
14
+ const typeAnnotations = ((_a = decorators_1.Sheet.getAnnotations(type)) === null || _a === void 0 ? void 0 : _a.filter((anno) => anno.type === 'type')) || [];
15
+ for (const typeAnno of typeAnnotations) {
16
+ if (typeAnno.propName && typeAnno.childType) {
17
+ nestedObjects.set(typeAnno.fieldName, {
18
+ propName: typeAnno.propName,
19
+ type: typeAnno.childType(),
20
+ });
21
+ instance[typeAnno.propName] = new (typeAnno.childType())();
22
+ }
23
+ }
24
+ return nestedObjects;
25
+ }
26
+ /**
27
+ * アノテーションのキーマップを構築
28
+ */
29
+ function buildKeyToAnnotationMap(annotations, nestedObjects) {
30
+ const keyToAnnotationMap = new Map();
31
+ for (const [key, annotation] of Object.entries(annotations)) {
32
+ if (annotation.type === 'type')
33
+ continue;
34
+ if (!annotation.fieldName)
35
+ continue;
36
+ for (const [parentField, parentInfo] of nestedObjects.entries()) {
37
+ const parentPrefix = `${parentField}_`;
38
+ if (annotation.fieldName.startsWith(parentPrefix)) {
39
+ keyToAnnotationMap.set(annotation.fieldName, {
40
+ annotation,
41
+ isNested: true,
42
+ parent: parentInfo.propName,
43
+ });
44
+ break;
45
+ }
46
+ }
47
+ if (!keyToAnnotationMap.has(annotation.fieldName)) {
48
+ keyToAnnotationMap.set(annotation.fieldName, {
49
+ annotation,
50
+ isNested: false,
51
+ });
52
+ }
53
+ }
54
+ return keyToAnnotationMap;
55
+ }
56
+ /**
57
+ * ネストされたレコードキーからアノテーション情報を探す
58
+ */
59
+ function findNestedAnnotationInfo(recordKey, nestedObjects) {
60
+ for (const [parentField, parentInfo] of nestedObjects.entries()) {
61
+ if (recordKey.startsWith(`${parentField}_`)) {
62
+ const childField = recordKey.substring(parentField.length + 1);
63
+ const childAnnotations = (0, decorators_1.getFlattenFieldAnnotations)(parentInfo.type);
64
+ for (const [, childAnnotation] of Object.entries(childAnnotations)) {
65
+ if (!childAnnotation.fieldName)
66
+ continue;
67
+ if (childAnnotation.fieldName === childField) {
68
+ return {
69
+ annotation: childAnnotation,
70
+ isNested: true,
71
+ parent: parentInfo.propName,
72
+ };
73
+ }
74
+ }
75
+ break;
76
+ }
77
+ }
78
+ return undefined;
79
+ }
80
+ /**
81
+ * インスタンスをプレーンオブジェクトに変換
82
+ */
83
+ function toPlainObject(instance) {
84
+ const plainObject = {};
85
+ for (const key in instance) {
86
+ if (Object.prototype.hasOwnProperty.call(instance, key)) {
87
+ const value = instance[key];
88
+ if (value &&
89
+ typeof value === 'object' &&
90
+ !Array.isArray(value) &&
91
+ !(value instanceof Date)) {
92
+ const nestedPlain = {};
93
+ for (const nestedKey in value) {
94
+ if (Object.prototype.hasOwnProperty.call(value, nestedKey)) {
95
+ nestedPlain[nestedKey] = value[nestedKey];
96
+ }
97
+ }
98
+ plainObject[key] = nestedPlain;
99
+ }
100
+ else {
101
+ plainObject[key] = value;
102
+ }
103
+ }
104
+ }
105
+ return plainObject;
106
+ }
107
+ //# sourceMappingURL=from-sheet-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-sheet-helpers.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/from-sheet-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * シートデータからオブジェクトを生成
3
+ */
4
+ export declare function fromSheet<E, D extends object>(record: D, type: {
5
+ new (): E;
6
+ }): E;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromSheet = fromSheet;
4
+ const decorators_1 = require("../decorators");
5
+ const sheet_type_converters_1 = require("./sheet-type-converters");
6
+ const from_sheet_helpers_1 = require("./from-sheet-helpers");
7
+ /**
8
+ * 値を型に応じて変換
9
+ */
10
+ function convertValue(annotation, recordValue) {
11
+ var _a;
12
+ switch (annotation.type) {
13
+ case 'number':
14
+ return (0, sheet_type_converters_1.fromSheetNumber)(recordValue);
15
+ case 'date':
16
+ return (0, sheet_type_converters_1.fromSheetDate)(recordValue);
17
+ case 'array':
18
+ return (_a = recordValue === null || recordValue === void 0 ? void 0 : recordValue.split(',')) !== null && _a !== void 0 ? _a : [];
19
+ case 'boolean':
20
+ return (0, sheet_type_converters_1.fromSheetBoolean)(recordValue);
21
+ case 'text':
22
+ return (0, sheet_type_converters_1.fromSheetText)(recordValue);
23
+ default:
24
+ return recordValue || null;
25
+ }
26
+ }
27
+ /**
28
+ * 変換された値をインスタンスに設定
29
+ */
30
+ function setConvertedValue(instance, annotation, isNested, parent, convertedValue) {
31
+ if (isNested && parent) {
32
+ const propName = annotation.propName.includes('.')
33
+ ? annotation.propName.split('.').pop()
34
+ : annotation.propName;
35
+ if (propName && instance[parent]) {
36
+ instance[parent][propName] = convertedValue;
37
+ }
38
+ }
39
+ else {
40
+ if (annotation.propName) {
41
+ instance[annotation.propName] = convertedValue;
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * シートデータからオブジェクトを生成
47
+ */
48
+ function fromSheet(record, type) {
49
+ const instance = new type();
50
+ const annotations = (0, decorators_1.getFlattenFieldAnnotations)(type);
51
+ const nestedObjects = (0, from_sheet_helpers_1.buildNestedObjectsMap)(type, instance);
52
+ const keyToAnnotationMap = (0, from_sheet_helpers_1.buildKeyToAnnotationMap)(annotations, nestedObjects);
53
+ for (const [recordKey, recordValue] of Object.entries(record)) {
54
+ let annotationInfo = keyToAnnotationMap.get(recordKey);
55
+ if (!annotationInfo) {
56
+ annotationInfo = (0, from_sheet_helpers_1.findNestedAnnotationInfo)(recordKey, nestedObjects);
57
+ }
58
+ if (!annotationInfo)
59
+ continue;
60
+ const { annotation, isNested, parent } = annotationInfo;
61
+ const convertedValue = convertValue(annotation, recordValue);
62
+ setConvertedValue(instance, annotation, isNested, parent, convertedValue);
63
+ }
64
+ return (0, from_sheet_helpers_1.toPlainObject)(instance);
65
+ }
66
+ //# sourceMappingURL=from-sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-sheet.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/from-sheet.ts"],"names":[],"mappings":";;AA+DA,8BAwBC;AAvFD,8CAA2D;AAC3D,mEAKiC;AACjC,6DAM8B;AAE9B;;GAEG;AACH,SAAS,YAAY,CAAC,UAA2B,EAAE,WAAgB;;IACjE,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,IAAA,uCAAe,EAAC,WAAW,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,IAAA,qCAAa,EAAC,WAAqB,CAAC,CAAC;QAC9C,KAAK,OAAO;YACV,OAAO,MAAC,WAAsB,aAAtB,WAAW,uBAAX,WAAW,CAAa,KAAK,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QACnD,KAAK,SAAS;YACZ,OAAO,IAAA,wCAAgB,EAAC,WAAW,CAAC,CAAC;QACvC,KAAK,MAAM;YACT,OAAO,IAAA,qCAAa,EAAC,WAAW,CAAC,CAAC;QACpC;YACE,OAAO,WAAW,IAAI,IAAI,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAW,EACX,UAA2B,EAC3B,QAAiB,EACjB,MAA0B,EAC1B,cAAmB;IAEnB,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YACtC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QAExB,IAAI,QAAQ,IAAK,QAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,QAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;QACvD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CACvB,MAAS,EACT,IAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAA,uCAA0B,EAAkB,IAAI,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,IAAA,0CAAqB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,IAAA,4CAAuB,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAE/E,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,IAAA,6CAAwB,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,cAAc;YAAE,SAAS;QAE9B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QACxD,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC7D,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAA,kCAAa,EAAC,QAAQ,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import dayjs from 'dayjs';
2
+ /**
3
+ * Excelのシリアル日付値をDateオブジェクトに変換
4
+ * @param serial Excelのシリアル日付値(1899-12-30からの日数)
5
+ * @returns Dateオブジェクト、またはnull
6
+ */
7
+ export declare function fromSheetDate(serial: number | null): Date | null;
8
+ /**
9
+ * シートの値をbooleanに変換
10
+ * @param value シートの値(boolean | 'TRUE' | 'FALSE' | その他)
11
+ * @returns boolean値
12
+ */
13
+ export declare function fromSheetBoolean(value: any): boolean;
14
+ /**
15
+ * シートの値を文字列に変換
16
+ * @param value シートの値
17
+ * @returns 文字列、またはnull
18
+ */
19
+ export declare function fromSheetText(value: any): string | null;
20
+ /**
21
+ * シートの値を数値に変換
22
+ * 通貨記号やカンマ区切りを含む文字列にも対応
23
+ * @param value シートの値
24
+ * @returns 数値、またはnull
25
+ */
26
+ export declare function fromSheetNumber(value: any): number | null;
27
+ /**
28
+ * DateまたはdayjsオブジェクトをシートのDate形式に変換
29
+ * @param date Date | dayjs.Dayjs | null
30
+ * @returns Date | null
31
+ */
32
+ export declare function toSheetDate(date: dayjs.Dayjs | Date | null): Date | null;
33
+ /**
34
+ * booleanをシートの文字列形式に変換
35
+ * @param value boolean値
36
+ * @returns 'TRUE' | 'FALSE'
37
+ */
38
+ export declare function toSheetBoolean(value: boolean): string;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromSheetDate = fromSheetDate;
4
+ exports.fromSheetBoolean = fromSheetBoolean;
5
+ exports.fromSheetText = fromSheetText;
6
+ exports.fromSheetNumber = fromSheetNumber;
7
+ exports.toSheetDate = toSheetDate;
8
+ exports.toSheetBoolean = toSheetBoolean;
9
+ const tslib_1 = require("tslib");
10
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
11
+ /**
12
+ * Excelのシリアル日付値をDateオブジェクトに変換
13
+ * @param serial Excelのシリアル日付値(1899-12-30からの日数)
14
+ * @returns Dateオブジェクト、またはnull
15
+ */
16
+ function fromSheetDate(serial) {
17
+ if (typeof serial !== 'number')
18
+ return null;
19
+ const excelEpoch = (0, dayjs_1.default)('1899-12-30');
20
+ return excelEpoch.add(serial, 'day').toDate();
21
+ }
22
+ /**
23
+ * シートの値をbooleanに変換
24
+ * @param value シートの値(boolean | 'TRUE' | 'FALSE' | その他)
25
+ * @returns boolean値
26
+ */
27
+ function fromSheetBoolean(value) {
28
+ if (typeof value === 'boolean')
29
+ return value;
30
+ return value === 'TRUE';
31
+ }
32
+ /**
33
+ * シートの値を文字列に変換
34
+ * @param value シートの値
35
+ * @returns 文字列、またはnull
36
+ */
37
+ function fromSheetText(value) {
38
+ if (value === null || value === undefined)
39
+ return null;
40
+ return `${value}`;
41
+ }
42
+ /**
43
+ * シートの値を数値に変換
44
+ * 通貨記号やカンマ区切りを含む文字列にも対応
45
+ * @param value シートの値
46
+ * @returns 数値、またはnull
47
+ */
48
+ function fromSheetNumber(value) {
49
+ if (value === null || value === undefined || value === '')
50
+ return null;
51
+ if (typeof value === 'number')
52
+ return value;
53
+ if (typeof value === 'string') {
54
+ // 通貨記号(¥,$など)、カンマ、スペース、その他の記号を削除
55
+ const cleanedValue = value.replace(/[¥$,\s]/g, '');
56
+ const numValue = Number(cleanedValue);
57
+ return !isNaN(numValue) ? numValue : null;
58
+ }
59
+ return null;
60
+ }
61
+ /**
62
+ * DateまたはdayjsオブジェクトをシートのDate形式に変換
63
+ * @param date Date | dayjs.Dayjs | null
64
+ * @returns Date | null
65
+ */
66
+ function toSheetDate(date) {
67
+ if (!date)
68
+ return null;
69
+ if (dayjs_1.default.isDayjs(date))
70
+ return date.toDate();
71
+ return date;
72
+ }
73
+ /**
74
+ * booleanをシートの文字列形式に変換
75
+ * @param value boolean値
76
+ * @returns 'TRUE' | 'FALSE'
77
+ */
78
+ function toSheetBoolean(value) {
79
+ return value ? 'TRUE' : 'FALSE';
80
+ }
81
+ //# sourceMappingURL=sheet-type-converters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet-type-converters.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/sheet-type-converters.ts"],"names":[],"mappings":";;AAOA,sCAIC;AAOD,4CAGC;AAOD,sCAGC;AAQD,0CAaC;AAOD,kCAIC;AAOD,wCAEC;;AAxED,0DAA0B;AAE1B;;;;GAIG;AACH,SAAgB,aAAa,CAAC,MAAqB;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAA,eAAK,EAAC,YAAY,CAAC,CAAC;IACvC,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,KAAU;IACzC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,KAAK,KAAK,MAAM,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAU;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,GAAG,KAAK,EAAE,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAU;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEvE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,iCAAiC;QACjC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,IAA+B;IACzD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * オブジェクトをシートデータに変換
3
+ */
4
+ export declare function toSheet<E, D extends object>(entity: E, type: {
5
+ new (): E;
6
+ }): D;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSheet = toSheet;
4
+ const lodash_es_1 = require("lodash-es");
5
+ const decorators_1 = require("../decorators");
6
+ const sheet_type_converters_1 = require("./sheet-type-converters");
7
+ /**
8
+ * 親フィールドのマッピング情報を構築
9
+ */
10
+ function buildParentFieldMap(type) {
11
+ var _a;
12
+ const parentFieldMap = new Map();
13
+ const typeAnnotations = ((_a = decorators_1.Sheet.getAnnotations(type)) === null || _a === void 0 ? void 0 : _a.filter((anno) => anno.type === 'type')) || [];
14
+ for (const typeAnno of typeAnnotations) {
15
+ if (typeAnno.fieldName && typeAnno.propName) {
16
+ parentFieldMap.set(typeAnno.fieldName, {
17
+ parentJpName: typeAnno.fieldName,
18
+ parentJsName: typeAnno.propName,
19
+ });
20
+ }
21
+ }
22
+ return parentFieldMap;
23
+ }
24
+ /**
25
+ * 値を型に応じてシート形式に変換
26
+ */
27
+ function convertToSheetValue(annotation, value) {
28
+ switch (annotation.type) {
29
+ case 'number':
30
+ if (value === undefined || value === null) {
31
+ return null;
32
+ }
33
+ return isNaN(Number(value)) ? null : Number(value);
34
+ case 'date':
35
+ if (value === undefined || value === null) {
36
+ return null;
37
+ }
38
+ return (0, sheet_type_converters_1.toSheetDate)(value);
39
+ case 'array':
40
+ if (value === undefined || value === null) {
41
+ return undefined;
42
+ }
43
+ return Array.isArray(value) ? value.join(',') : value;
44
+ case 'boolean':
45
+ if (value === undefined || value === null) {
46
+ return undefined;
47
+ }
48
+ return (0, sheet_type_converters_1.toSheetBoolean)(value);
49
+ case 'text':
50
+ case 'type':
51
+ default:
52
+ if (value === undefined || value === null) {
53
+ return undefined;
54
+ }
55
+ return value;
56
+ }
57
+ }
58
+ /**
59
+ * オブジェクトをシートデータに変換
60
+ */
61
+ function toSheet(entity, type) {
62
+ const result = {};
63
+ const annotations = (0, decorators_1.getFlattenFieldAnnotations)(type);
64
+ const parentFieldMap = buildParentFieldMap(type);
65
+ for (const [key, annotation] of Object.entries(annotations)) {
66
+ if (!annotation.fieldName || !annotation.propName)
67
+ continue;
68
+ let fieldName = annotation.fieldName;
69
+ let propPath = annotation.propName;
70
+ for (const [parentField, mapping] of parentFieldMap.entries()) {
71
+ if (key.startsWith(parentField) && key !== parentField) {
72
+ fieldName = `${mapping.parentJpName}_${fieldName}`;
73
+ propPath = `${mapping.parentJsName}.${propPath}`;
74
+ break;
75
+ }
76
+ }
77
+ const value = (0, lodash_es_1.get)(entity, propPath);
78
+ result[fieldName] = convertToSheetValue(annotation, value);
79
+ }
80
+ return result;
81
+ }
82
+ //# sourceMappingURL=to-sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-sheet.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/spreadsheet/src/lib/converter/to-sheet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/spreadsheet",
3
- "version": "19.9.0",
3
+ "version": "19.12.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/spreadsheet",