@simplysm/excel 14.0.29 → 14.0.31

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.
@@ -17,13 +17,6 @@ import { ZipCache } from "./utils/zip-cache";
17
17
  *
18
18
  * @example
19
19
  * ```typescript
20
- * // await using 사용 (권장)
21
- * await using wb = new ExcelWorkbook(bytes);
22
- * const ws = await wb.getWorksheet(0);
23
- * // ... 작업 수행
24
- * // 스코프 종료 시 리소스 자동 해제
25
- *
26
- * // 또는 try-finally 사용
27
20
  * const wb = new ExcelWorkbook(bytes);
28
21
  * try {
29
22
  * const ws = await wb.getWorksheet(0);
@@ -61,6 +54,5 @@ export declare class ExcelWorkbook {
61
54
  * 이미 닫힌 워크북에 대해 호출해도 안전하다 (no-op).
62
55
  */
63
56
  close(): Promise<void>;
64
- [Symbol.asyncDispose](): Promise<void>;
65
57
  }
66
58
  //# sourceMappingURL=excel-workbook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"excel-workbook.d.ts","sourceRoot":"","sources":["../src/excel-workbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;gBACS,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK;IA+B9B,OAAO,CAAC,gBAAgB;IAMxB,yBAAyB;IACnB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM5C,sBAAsB;IAChB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgCzD,+BAA+B;IACzB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyCzE,wBAAwB;IAClB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;IAK/B,uBAAuB;IACjB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7C"}
1
+ {"version":3,"file":"excel-workbook.d.ts","sourceRoot":"","sources":["../src/excel-workbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;gBACS,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK;IA+B9B,OAAO,CAAC,gBAAgB;IAMxB,yBAAyB;IACnB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM5C,sBAAsB;IAChB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgCzD,+BAA+B;IACzB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyCzE,wBAAwB;IAClB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;IAK/B,uBAAuB;IACjB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
@@ -20,13 +20,6 @@ import { ExcelXmlWorksheet as ExcelXmlWorksheetClass } from "./xml/excel-xml-wor
20
20
  *
21
21
  * @example
22
22
  * ```typescript
23
- * // await using 사용 (권장)
24
- * await using wb = new ExcelWorkbook(bytes);
25
- * const ws = await wb.getWorksheet(0);
26
- * // ... 작업 수행
27
- * // 스코프 종료 시 리소스 자동 해제
28
- *
29
- * // 또는 try-finally 사용
30
23
  * const wb = new ExcelWorkbook(bytes);
31
24
  * try {
32
25
  * const ws = await wb.getWorksheet(0);
@@ -158,8 +151,5 @@ export class ExcelWorkbook {
158
151
  this._wsMap.clear();
159
152
  await this.zipCache.close();
160
153
  }
161
- async [Symbol.asyncDispose]() {
162
- await this.close();
163
- }
164
154
  }
165
155
  //# sourceMappingURL=excel-workbook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"excel-workbook.js","sourceRoot":"","sources":["../src/excel-workbook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excel-workbook.js","sourceRoot":"","sources":["../src/excel-workbook.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,16 @@ export declare class ExcelWrapper<TSchema extends z.ZodObject<z.ZodRawShape>> {
23
23
  *
24
24
  * @remarks
25
25
  * 반환된 워크북의 리소스 관리는 호출자의 책임이다.
26
- * `await using`을 사용하거나 사용 후 `close()`를 호출해야 한다.
26
+ * 사용 후 `close()`를 호출해야 한다.
27
27
  *
28
28
  * @example
29
29
  * ```typescript
30
- * await using wb = await wrapper.write("Sheet1", records);
31
- * const bytes = await wb.toBytes();
30
+ * const wb = await wrapper.write("Sheet1", records);
31
+ * try {
32
+ * const bytes = await wb.toBytes();
33
+ * } finally {
34
+ * await wb.close();
35
+ * }
32
36
  * ```
33
37
  */
34
38
  write(wsName: string, records: Partial<z.infer<TSchema>>[], options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"excel-wrapper.d.ts","sourceRoot":"","sources":["../src/excel-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,KAAK,CAAC,EAOP,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;;;GAIG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAItD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC;;OAEG;gBAC0B,OAAO,EAAE,OAAO;IAE7C;;OAEG;IACG,IAAI,CACR,IAAI,EAAE,KAAK,GAAG,IAAI,EAClB,aAAa,GAAE,MAAM,GAAG,MAAU,EAClC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAA;KAAE,GAClD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IA0D9B;;;;;;;;;;;;OAYG;IACG,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EACpC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAA;KAAE,GAClD,OAAO,CAAC,aAAa,CAAC;IA0DzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;CAMnB"}
1
+ {"version":3,"file":"excel-wrapper.d.ts","sourceRoot":"","sources":["../src/excel-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,KAAK,CAAC,EAOP,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;;;GAIG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAItD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC;;OAEG;gBAC0B,OAAO,EAAE,OAAO;IAE7C;;OAEG;IACG,IAAI,CACR,IAAI,EAAE,KAAK,GAAG,IAAI,EAClB,aAAa,GAAE,MAAM,GAAG,MAAU,EAClC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAA;KAAE,GAClD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IA6D9B;;;;;;;;;;;;;;;;OAgBG;IACG,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EACpC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAA;KAAE,GAClD,OAAO,CAAC,aAAa,CAAC;IA0DzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;CAMnB"}
@@ -18,58 +18,67 @@ export class ExcelWrapper {
18
18
  * Excel 파일을 레코드 배열로 읽기
19
19
  */
20
20
  async read(file, wsNameOrIndex = 0, options) {
21
- await using wb = new ExcelWorkbook(file);
22
- const excludes = options?.excludes;
23
- const ws = await wb.getWorksheet(wsNameOrIndex);
24
- const wsName = await ws.getName();
25
- const displayNameMap = this._getDisplayNameMap(excludes);
26
- const displayNames = Object.values(displayNameMap);
27
- const rawData = await ws.getDataTable({
28
- usableHeaderNameFn: (headerName) => displayNames.includes(headerName),
29
- });
30
- if (rawData.length === 0) {
31
- throw new Error(`[${wsName}] Excel 파일에서 데이터를 찾을 수 없습니다. (기대하는 헤더: ${displayNames.join(", ")})`);
32
- }
33
- const reverseMap = this._getReverseDisplayNameMap(excludes);
34
- const shape = this._schema.shape;
35
- const result = [];
36
- for (const row of rawData) {
37
- const record = {};
38
- let hasNonNullValue = false;
39
- for (const [displayName, fieldKey] of reverseMap) {
40
- const rawValue = row[displayName];
41
- const fieldSchema = shape[fieldKey];
42
- if (rawValue != null && rawValue !== "") {
43
- hasNonNullValue = true;
44
- }
45
- record[fieldKey] = this._convertValue(rawValue, fieldSchema);
46
- }
47
- if (!hasNonNullValue) {
48
- continue;
21
+ const wb = new ExcelWorkbook(file);
22
+ try {
23
+ const excludes = options?.excludes;
24
+ const ws = await wb.getWorksheet(wsNameOrIndex);
25
+ const wsName = await ws.getName();
26
+ const displayNameMap = this._getDisplayNameMap(excludes);
27
+ const displayNames = Object.values(displayNameMap);
28
+ const rawData = await ws.getDataTable({
29
+ usableHeaderNameFn: (headerName) => displayNames.includes(headerName),
30
+ });
31
+ if (rawData.length === 0) {
32
+ throw new Error(`[${wsName}] Excel 파일에서 데이터를 찾을 수 없습니다. (기대하는 헤더: ${displayNames.join(", ")})`);
49
33
  }
50
- // Zod 스키마로 유효성 검사
51
- const parseResult = this._schema.safeParse(record);
52
- if (!parseResult.success) {
53
- const errors = parseResult.error.issues
54
- .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
55
- .join(", ");
56
- throw new Error(`[${wsName}] 데이터 유효성 검사 실패: ${errors}`);
34
+ const reverseMap = this._getReverseDisplayNameMap(excludes);
35
+ const shape = this._schema.shape;
36
+ const result = [];
37
+ for (const row of rawData) {
38
+ const record = {};
39
+ let hasNonNullValue = false;
40
+ for (const [displayName, fieldKey] of reverseMap) {
41
+ const rawValue = row[displayName];
42
+ const fieldSchema = shape[fieldKey];
43
+ if (rawValue != null && rawValue !== "") {
44
+ hasNonNullValue = true;
45
+ }
46
+ record[fieldKey] = this._convertValue(rawValue, fieldSchema);
47
+ }
48
+ if (!hasNonNullValue) {
49
+ continue;
50
+ }
51
+ // Zod 스키마로 유효성 검사
52
+ const parseResult = this._schema.safeParse(record);
53
+ if (!parseResult.success) {
54
+ const errors = parseResult.error.issues
55
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
56
+ .join(", ");
57
+ throw new Error(`[${wsName}] 데이터 유효성 검사 실패: ${errors}`);
58
+ }
59
+ result.push(parseResult.data);
57
60
  }
58
- result.push(parseResult.data);
61
+ return result;
62
+ }
63
+ finally {
64
+ await wb.close();
59
65
  }
60
- return result;
61
66
  }
62
67
  /**
63
68
  * 레코드 배열을 Excel 워크북으로 변환
64
69
  *
65
70
  * @remarks
66
71
  * 반환된 워크북의 리소스 관리는 호출자의 책임이다.
67
- * `await using`을 사용하거나 사용 후 `close()`를 호출해야 한다.
72
+ * 사용 후 `close()`를 호출해야 한다.
68
73
  *
69
74
  * @example
70
75
  * ```typescript
71
- * await using wb = await wrapper.write("Sheet1", records);
72
- * const bytes = await wb.toBytes();
76
+ * const wb = await wrapper.write("Sheet1", records);
77
+ * try {
78
+ * const bytes = await wb.toBytes();
79
+ * } finally {
80
+ * await wb.close();
81
+ * }
73
82
  * ```
74
83
  */
75
84
  async write(wsName, records, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"excel-wrapper.js","sourceRoot":"","sources":["../src/excel-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excel-wrapper.js","sourceRoot":"","sources":["../src/excel-wrapper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/excel",
3
- "version": "14.0.29",
3
+ "version": "14.0.31",
4
4
  "description": "심플리즘 패키지 - 엑셀 (neutral)",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",
@@ -23,6 +23,6 @@
23
23
  "dependencies": {
24
24
  "mime": "^4.1.0",
25
25
  "zod": "^4.3.6",
26
- "@simplysm/core-common": "14.0.29"
26
+ "@simplysm/core-common": "14.0.31"
27
27
  }
28
28
  }
@@ -23,13 +23,6 @@ import { ExcelXmlWorksheet as ExcelXmlWorksheetClass } from "./xml/excel-xml-wor
23
23
  *
24
24
  * @example
25
25
  * ```typescript
26
- * // await using 사용 (권장)
27
- * await using wb = new ExcelWorkbook(bytes);
28
- * const ws = await wb.getWorksheet(0);
29
- * // ... 작업 수행
30
- * // 스코프 종료 시 리소스 자동 해제
31
- *
32
- * // 또는 try-finally 사용
33
26
  * const wb = new ExcelWorkbook(bytes);
34
27
  * try {
35
28
  * const ws = await wb.getWorksheet(0);
@@ -202,9 +195,5 @@ export class ExcelWorkbook {
202
195
  await this.zipCache.close();
203
196
  }
204
197
 
205
- async [Symbol.asyncDispose](): Promise<void> {
206
- await this.close();
207
- }
208
-
209
198
  //#endregion
210
199
  }
@@ -31,61 +31,64 @@ export class ExcelWrapper<TSchema extends z.ZodObject<z.ZodRawShape>> {
31
31
  wsNameOrIndex: string | number = 0,
32
32
  options?: { excludes?: (keyof z.infer<TSchema>)[] },
33
33
  ): Promise<z.infer<TSchema>[]> {
34
- await using wb = new ExcelWorkbook(file);
34
+ const wb = new ExcelWorkbook(file);
35
+ try {
36
+ const excludes = options?.excludes as string[] | undefined;
35
37
 
36
- const excludes = options?.excludes as string[] | undefined;
38
+ const ws = await wb.getWorksheet(wsNameOrIndex);
39
+ const wsName = await ws.getName();
37
40
 
38
- const ws = await wb.getWorksheet(wsNameOrIndex);
39
- const wsName = await ws.getName();
41
+ const displayNameMap = this._getDisplayNameMap(excludes);
42
+ const displayNames = Object.values(displayNameMap);
43
+ const rawData = await ws.getDataTable({
44
+ usableHeaderNameFn: (headerName) => displayNames.includes(headerName),
45
+ });
40
46
 
41
- const displayNameMap = this._getDisplayNameMap(excludes);
42
- const displayNames = Object.values(displayNameMap);
43
- const rawData = await ws.getDataTable({
44
- usableHeaderNameFn: (headerName) => displayNames.includes(headerName),
45
- });
47
+ if (rawData.length === 0) {
48
+ throw new Error(
49
+ `[${wsName}] Excel 파일에서 데이터를 찾을 수 없습니다. (기대하는 헤더: ${displayNames.join(", ")})`,
50
+ );
51
+ }
46
52
 
47
- if (rawData.length === 0) {
48
- throw new Error(
49
- `[${wsName}] Excel 파일에서 데이터를 찾을 수 없습니다. (기대하는 헤더: ${displayNames.join(", ")})`,
50
- );
51
- }
53
+ const reverseMap = this._getReverseDisplayNameMap(excludes);
54
+ const shape = this._schema.shape;
55
+ const result: z.infer<TSchema>[] = [];
52
56
 
53
- const reverseMap = this._getReverseDisplayNameMap(excludes);
54
- const shape = this._schema.shape;
55
- const result: z.infer<TSchema>[] = [];
57
+ for (const row of rawData) {
58
+ const record: Record<string, unknown> = {};
59
+ let hasNonNullValue = false;
56
60
 
57
- for (const row of rawData) {
58
- const record: Record<string, unknown> = {};
59
- let hasNonNullValue = false;
61
+ for (const [displayName, fieldKey] of reverseMap) {
62
+ const rawValue = row[displayName];
63
+ const fieldSchema = shape[fieldKey] as z.ZodType;
60
64
 
61
- for (const [displayName, fieldKey] of reverseMap) {
62
- const rawValue = row[displayName];
63
- const fieldSchema = shape[fieldKey] as z.ZodType;
65
+ if (rawValue != null && rawValue !== "") {
66
+ hasNonNullValue = true;
67
+ }
64
68
 
65
- if (rawValue != null && rawValue !== "") {
66
- hasNonNullValue = true;
69
+ record[fieldKey] = this._convertValue(rawValue, fieldSchema);
67
70
  }
68
71
 
69
- record[fieldKey] = this._convertValue(rawValue, fieldSchema);
70
- }
72
+ if (!hasNonNullValue) {
73
+ continue;
74
+ }
71
75
 
72
- if (!hasNonNullValue) {
73
- continue;
74
- }
76
+ // Zod 스키마로 유효성 검사
77
+ const parseResult = this._schema.safeParse(record);
78
+ if (!parseResult.success) {
79
+ const errors = parseResult.error.issues
80
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
81
+ .join(", ");
82
+ throw new Error(`[${wsName}] 데이터 유효성 검사 실패: ${errors}`);
83
+ }
75
84
 
76
- // Zod 스키마로 유효성 검사
77
- const parseResult = this._schema.safeParse(record);
78
- if (!parseResult.success) {
79
- const errors = parseResult.error.issues
80
- .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
81
- .join(", ");
82
- throw new Error(`[${wsName}] 데이터 유효성 검사 실패: ${errors}`);
85
+ result.push(parseResult.data);
83
86
  }
84
87
 
85
- result.push(parseResult.data);
88
+ return result;
89
+ } finally {
90
+ await wb.close();
86
91
  }
87
-
88
- return result;
89
92
  }
90
93
 
91
94
  /**
@@ -93,12 +96,16 @@ export class ExcelWrapper<TSchema extends z.ZodObject<z.ZodRawShape>> {
93
96
  *
94
97
  * @remarks
95
98
  * 반환된 워크북의 리소스 관리는 호출자의 책임이다.
96
- * `await using`을 사용하거나 사용 후 `close()`를 호출해야 한다.
99
+ * 사용 후 `close()`를 호출해야 한다.
97
100
  *
98
101
  * @example
99
102
  * ```typescript
100
- * await using wb = await wrapper.write("Sheet1", records);
101
- * const bytes = await wb.toBytes();
103
+ * const wb = await wrapper.write("Sheet1", records);
104
+ * try {
105
+ * const bytes = await wb.toBytes();
106
+ * } finally {
107
+ * await wb.close();
108
+ * }
102
109
  * ```
103
110
  */
104
111
  async write(