@simplysm/sd-claude 14.0.47 → 14.0.49

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.
Files changed (130) hide show
  1. package/{claude/references/sd-simplysm14/sd-claude/usage.md → README.md} +2 -2
  2. package/claude/rules/sd-claude-rules.md +25 -10
  3. package/claude/rules/sd-options.md +11 -6
  4. package/claude/sd-subagent-start.sh +6 -0
  5. package/claude/settings.json +1 -12
  6. package/claude/skills/sd-check/SKILL.md +43 -12
  7. package/claude/skills/sd-claude-docs/SKILL.md +30 -58
  8. package/claude/skills/sd-claude-docs/references/package-claudemd.md +12 -0
  9. package/claude/skills/sd-claude-docs/references/package-doc-gen.md +26 -13
  10. package/claude/skills/sd-commit/SKILL.md +1 -1
  11. package/claude/skills/sd-debug/SKILL.md +5 -3
  12. package/claude/skills/sd-deliverable/SKILL.md +1 -1
  13. package/claude/skills/sd-dev/SKILL.md +14 -9
  14. package/claude/skills/sd-doc-extract/SKILL.md +8 -10
  15. package/claude/skills/sd-doc-extract/_common.py +8 -1
  16. package/claude/skills/sd-doc-extract/_extract_docx.py +74 -34
  17. package/claude/skills/sd-doc-extract/_extract_pdf.py +12 -1
  18. package/claude/skills/sd-doc-extract/_extract_pptx.py +103 -23
  19. package/claude/skills/sd-doc-extract/_extract_xlsb.py +93 -4
  20. package/claude/skills/sd-doc-extract/_extract_xlsx.py +98 -36
  21. package/claude/skills/sd-doc-extract/extract.py +22 -3
  22. package/claude/skills/sd-inner-clarify/SKILL.md +78 -0
  23. package/claude/skills/sd-inner-debug/SKILL.md +1 -1
  24. package/claude/skills/sd-inner-review/SKILL.md +13 -0
  25. package/claude/skills/sd-issue/SKILL.md +1 -1
  26. package/claude/skills/sd-outlook/SKILL.md +1 -1
  27. package/claude/skills/sd-plan/SKILL.md +50 -17
  28. package/claude/skills/sd-prompt/SKILL.md +180 -178
  29. package/claude/skills/sd-prompt/references/eval-runner.md +5 -30
  30. package/claude/skills/sd-prompt/references/sd-eval-env-template.md +23 -0
  31. package/claude/skills/sd-refactor/SKILL.md +2 -2
  32. package/claude/skills/sd-tdd/SKILL.md +45 -16
  33. package/claude/skills/sd-use/SKILL.md +84 -80
  34. package/claude/skills/sd-wbs/SKILL.md +84 -27
  35. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/assets.md +2 -3
  36. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/hooks.md +7 -6
  37. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/scripts.md +1 -9
  38. package/package.json +3 -2
  39. package/scripts/sync.mjs +4 -2
  40. package/claude/references/sd-simplysm14/angular/docs/bootstrap.md +0 -48
  41. package/claude/references/sd-simplysm14/angular/docs/directives.md +0 -236
  42. package/claude/references/sd-simplysm14/angular/docs/features.md +0 -379
  43. package/claude/references/sd-simplysm14/angular/docs/pipes.md +0 -32
  44. package/claude/references/sd-simplysm14/angular/docs/plugins.md +0 -37
  45. package/claude/references/sd-simplysm14/angular/docs/provider-types.md +0 -283
  46. package/claude/references/sd-simplysm14/angular/docs/providers.md +0 -379
  47. package/claude/references/sd-simplysm14/angular/docs/styling.md +0 -222
  48. package/claude/references/sd-simplysm14/angular/docs/type-utilities.md +0 -250
  49. package/claude/references/sd-simplysm14/angular/docs/ui-data.md +0 -275
  50. package/claude/references/sd-simplysm14/angular/docs/ui-form.md +0 -490
  51. package/claude/references/sd-simplysm14/angular/docs/ui-layout.md +0 -140
  52. package/claude/references/sd-simplysm14/angular/docs/ui-navigation.md +0 -273
  53. package/claude/references/sd-simplysm14/angular/docs/ui-overlay.md +0 -157
  54. package/claude/references/sd-simplysm14/angular/docs/ui-visual.md +0 -127
  55. package/claude/references/sd-simplysm14/angular/docs/utils.md +0 -295
  56. package/claude/references/sd-simplysm14/angular/usage.md +0 -489
  57. package/claude/references/sd-simplysm14/capacitor-plugin-auto-update/usage.md +0 -182
  58. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/file-operations.md +0 -154
  59. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/permissions.md +0 -84
  60. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/storage-paths.md +0 -107
  61. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/types.md +0 -83
  62. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/usage.md +0 -133
  63. package/claude/references/sd-simplysm14/capacitor-plugin-intent/usage.md +0 -203
  64. package/claude/references/sd-simplysm14/capacitor-plugin-usb-storage/usage.md +0 -258
  65. package/claude/references/sd-simplysm14/core-browser/usage.md +0 -306
  66. package/claude/references/sd-simplysm14/core-common/docs/errors.md +0 -82
  67. package/claude/references/sd-simplysm14/core-common/docs/extensions.md +0 -167
  68. package/claude/references/sd-simplysm14/core-common/docs/features.md +0 -136
  69. package/claude/references/sd-simplysm14/core-common/docs/types.md +0 -245
  70. package/claude/references/sd-simplysm14/core-common/docs/utils.md +0 -591
  71. package/claude/references/sd-simplysm14/core-common/usage.md +0 -255
  72. package/claude/references/sd-simplysm14/core-node/docs/child-process.md +0 -182
  73. package/claude/references/sd-simplysm14/core-node/docs/features.md +0 -214
  74. package/claude/references/sd-simplysm14/core-node/docs/file-system.md +0 -509
  75. package/claude/references/sd-simplysm14/core-node/docs/file-watching.md +0 -139
  76. package/claude/references/sd-simplysm14/core-node/docs/logging.md +0 -180
  77. package/claude/references/sd-simplysm14/core-node/docs/path.md +0 -176
  78. package/claude/references/sd-simplysm14/core-node/docs/utilities-cpx.md +0 -194
  79. package/claude/references/sd-simplysm14/core-node/docs/utilities-fsx.md +0 -469
  80. package/claude/references/sd-simplysm14/core-node/docs/utilities-pathx.md +0 -151
  81. package/claude/references/sd-simplysm14/core-node/docs/worker-threads.md +0 -334
  82. package/claude/references/sd-simplysm14/core-node/docs/worker.md +0 -205
  83. package/claude/references/sd-simplysm14/core-node/usage.md +0 -259
  84. package/claude/references/sd-simplysm14/excel/docs/core-classes.md +0 -453
  85. package/claude/references/sd-simplysm14/excel/docs/types.md +0 -459
  86. package/claude/references/sd-simplysm14/excel/docs/utilities.md +0 -194
  87. package/claude/references/sd-simplysm14/excel/docs/wrapper.md +0 -73
  88. package/claude/references/sd-simplysm14/excel/usage.md +0 -134
  89. package/claude/references/sd-simplysm14/lint/usage.md +0 -130
  90. package/claude/references/sd-simplysm14/orm-common/docs/core.md +0 -188
  91. package/claude/references/sd-simplysm14/orm-common/docs/expression.md +0 -190
  92. package/claude/references/sd-simplysm14/orm-common/docs/models.md +0 -17
  93. package/claude/references/sd-simplysm14/orm-common/docs/query-builder.md +0 -97
  94. package/claude/references/sd-simplysm14/orm-common/docs/queryable-executable.md +0 -250
  95. package/claude/references/sd-simplysm14/orm-common/docs/schema-builders.md +0 -364
  96. package/claude/references/sd-simplysm14/orm-common/docs/types.md +0 -522
  97. package/claude/references/sd-simplysm14/orm-common/usage.md +0 -229
  98. package/claude/references/sd-simplysm14/orm-node/docs/connections.md +0 -137
  99. package/claude/references/sd-simplysm14/orm-node/docs/core.md +0 -131
  100. package/claude/references/sd-simplysm14/orm-node/docs/types.md +0 -173
  101. package/claude/references/sd-simplysm14/orm-node/usage.md +0 -143
  102. package/claude/references/sd-simplysm14/sd-cli/usage.md +0 -782
  103. package/claude/references/sd-simplysm14/service-client/docs/features.md +0 -217
  104. package/claude/references/sd-simplysm14/service-client/docs/main.md +0 -148
  105. package/claude/references/sd-simplysm14/service-client/docs/protocol.md +0 -53
  106. package/claude/references/sd-simplysm14/service-client/docs/transport.md +0 -131
  107. package/claude/references/sd-simplysm14/service-client/docs/types.md +0 -129
  108. package/claude/references/sd-simplysm14/service-client/usage.md +0 -202
  109. package/claude/references/sd-simplysm14/service-common/docs/app-structure.md +0 -175
  110. package/claude/references/sd-simplysm14/service-common/docs/events.md +0 -64
  111. package/claude/references/sd-simplysm14/service-common/docs/protocol.md +0 -331
  112. package/claude/references/sd-simplysm14/service-common/docs/service-types.md +0 -90
  113. package/claude/references/sd-simplysm14/service-common/docs/types.md +0 -19
  114. package/claude/references/sd-simplysm14/service-common/usage.md +0 -154
  115. package/claude/references/sd-simplysm14/service-server/docs/auth.md +0 -64
  116. package/claude/references/sd-simplysm14/service-server/docs/core.md +0 -174
  117. package/claude/references/sd-simplysm14/service-server/docs/legacy.md +0 -25
  118. package/claude/references/sd-simplysm14/service-server/docs/main.md +0 -88
  119. package/claude/references/sd-simplysm14/service-server/docs/protocol.md +0 -33
  120. package/claude/references/sd-simplysm14/service-server/docs/services.md +0 -94
  121. package/claude/references/sd-simplysm14/service-server/docs/transport-http.md +0 -93
  122. package/claude/references/sd-simplysm14/service-server/docs/transport-socket.md +0 -119
  123. package/claude/references/sd-simplysm14/service-server/docs/types.md +0 -36
  124. package/claude/references/sd-simplysm14/service-server/docs/utils.md +0 -22
  125. package/claude/references/sd-simplysm14/service-server/usage.md +0 -171
  126. package/claude/references/sd-simplysm14/storage/usage.md +0 -301
  127. package/claude/references/sd-simplysm14.md +0 -35
  128. package/claude/rules/sd-clarify.md +0 -23
  129. package/claude/sd-session-start.sh +0 -10
  130. /package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/cli.md +0 -0
@@ -1,459 +0,0 @@
1
- # Types
2
-
3
- ## Value Types
4
-
5
- ### `ExcelValueType`
6
-
7
- 셀에 저장할 수 있는 값의 타입이다.
8
-
9
- ```typescript
10
- export type ExcelValueType = number | string | DateOnly | DateTime | Time | boolean | undefined;
11
- ```
12
-
13
- ### `ExcelNumberFormat`
14
-
15
- 숫자 형식 이름이다. `ExcelUtils`의 변환 메서드와 `ExcelStyleOptions.numberFormat`에서 사용한다.
16
-
17
- ```typescript
18
- export type ExcelNumberFormat = "number" | "string" | "DateOnly" | "DateTime" | "Time";
19
- ```
20
-
21
- ### `ExcelCellType`
22
-
23
- Excel 셀 타입이다. XML의 `t` 속성에 대응한다.
24
-
25
- ```typescript
26
- export type ExcelCellType = "s" | "b" | "str" | "n" | "inlineStr" | "e";
27
- ```
28
-
29
- | Value | Description |
30
- |-------|-------------|
31
- | `"s"` | 공유 문자열 (SharedString) |
32
- | `"b"` | boolean |
33
- | `"str"` | 수식 결과 문자열 |
34
- | `"n"` | 숫자 |
35
- | `"inlineStr"` | 인라인 문자열 (서식 있는 텍스트) |
36
- | `"e"` | 에러 |
37
-
38
- ## Address Types
39
-
40
- ### `ExcelAddressPoint`
41
-
42
- 셀 좌표를 나타내는 인터페이스이다. 모든 좌표는 0 기반이다.
43
-
44
- ```typescript
45
- export interface ExcelAddressPoint {
46
- r: number;
47
- c: number;
48
- }
49
- ```
50
-
51
- | Field | Type | Description |
52
- |-------|------|-------------|
53
- | `r` | `number` | 행 인덱스 (0 기반) |
54
- | `c` | `number` | 열 인덱스 (0 기반) |
55
-
56
- ### `ExcelAddressRangePoint`
57
-
58
- 셀 범위 좌표를 나타내는 인터페이스이다.
59
-
60
- ```typescript
61
- export interface ExcelAddressRangePoint {
62
- s: ExcelAddressPoint;
63
- e: ExcelAddressPoint;
64
- }
65
- ```
66
-
67
- | Field | Type | Description |
68
- |-------|------|-------------|
69
- | `s` | `ExcelAddressPoint` | 시작 좌표 |
70
- | `e` | `ExcelAddressPoint` | 끝 좌표 |
71
-
72
- ## Style Types
73
-
74
- ### `ExcelStyleOptions`
75
-
76
- 셀 스타일 옵션 인터페이스이다.
77
-
78
- ```typescript
79
- export interface ExcelStyleOptions {
80
- background?: string;
81
- border?: ExcelBorderPosition[];
82
- horizontalAlign?: ExcelHorizontalAlign;
83
- verticalAlign?: ExcelVerticalAlign;
84
- numberFormat?: ExcelNumberFormat;
85
- numberFormatCode?: string;
86
- }
87
- ```
88
-
89
- | Field | Type | Description |
90
- |-------|------|-------------|
91
- | `background` | `string \| undefined` | 배경색 (ARGB 형식, 8자리 16진수. 예: `"00FF0000"` = 빨강. alpha는 반전 값) |
92
- | `border` | `ExcelBorderPosition[] \| undefined` | 테두리 위치 배열 |
93
- | `horizontalAlign` | `ExcelHorizontalAlign \| undefined` | 가로 정렬 |
94
- | `verticalAlign` | `ExcelVerticalAlign \| undefined` | 세로 정렬 |
95
- | `numberFormat` | `ExcelNumberFormat \| undefined` | 숫자 형식 프리셋 |
96
- | `numberFormatCode` | `string \| undefined` | 커스텀 Excel formatCode 문자열 (예: `"0.000000"`, `"#,##0.00"`, `"0.00%"`) |
97
-
98
- **우선순위:** `numberFormatCode`가 지정되면 `numberFormat`보다 우선 적용된다. 동일한 formatCode는 `numFmts`에 중복 등록되지 않는다.
99
-
100
- ### `ExcelBorderPosition`
101
-
102
- 테두리 위치를 나타내는 타입이다.
103
-
104
- ```typescript
105
- export type ExcelBorderPosition = "left" | "right" | "top" | "bottom";
106
- ```
107
-
108
- ### `ExcelHorizontalAlign`
109
-
110
- 가로 정렬을 나타내는 타입이다.
111
-
112
- ```typescript
113
- export type ExcelHorizontalAlign = "center" | "left" | "right";
114
- ```
115
-
116
- ### `ExcelVerticalAlign`
117
-
118
- 세로 정렬을 나타내는 타입이다.
119
-
120
- ```typescript
121
- export type ExcelVerticalAlign = "center" | "top" | "bottom";
122
- ```
123
-
124
- ## Excel XML Interface
125
-
126
- ### `ExcelXml`
127
-
128
- XML 처리 클래스가 구현하는 인터페이스이다. 내부 구현에 사용되며, `xml/` 디렉터리의 클래스들이 이를 구현한다.
129
-
130
- ```typescript
131
- export interface ExcelXml {
132
- readonly data: unknown;
133
- cleanup(): void;
134
- }
135
- ```
136
-
137
- | Field | Type | Description |
138
- |-------|------|-------------|
139
- | `data` | `unknown` | XML 파싱된 데이터 |
140
- | `cleanup()` | `() => void` | `ZipCache.toBytes()` 직전에 호출되어 직렬화 전 데이터를 정리한다 |
141
-
142
- ## XML Data Types
143
-
144
- 아래 인터페이스들은 xlsx 내부 XML 파일의 데이터 구조를 타입으로 표현한 것이다. 주로 내부 구현에 사용된다.
145
-
146
- ### `ExcelXmlContentTypeData`
147
-
148
- `[Content_Types].xml` 데이터 구조이다.
149
-
150
- ```typescript
151
- export interface ExcelXmlContentTypeData {
152
- Types: {
153
- $: { xmlns: string };
154
- Default: { $: { Extension: string; ContentType: string } }[];
155
- Override: { $: { PartName: string; ContentType: string } }[];
156
- };
157
- }
158
- ```
159
-
160
- | Field | Type | Description |
161
- |-------|------|-------------|
162
- | `Types.$` | `{ xmlns: string }` | 네임스페이스 |
163
- | `Types.Default` | `Array` | 확장자별 기본 콘텐트 타입 |
164
- | `Types.Default.$.Extension` | `string` | 파일 확장자 |
165
- | `Types.Default.$.ContentType` | `string` | MIME 타입 |
166
- | `Types.Override` | `Array` | 파일별 오버라이드 콘텐트 타입 |
167
- | `Types.Override.$.PartName` | `string` | 파일 경로 |
168
- | `Types.Override.$.ContentType` | `string` | MIME 타입 |
169
-
170
- ### `ExcelXmlRelationshipData`
171
-
172
- `*.rels` 파일 데이터 구조이다.
173
-
174
- ```typescript
175
- export interface ExcelXmlRelationshipData {
176
- Relationships: {
177
- $: { xmlns: string };
178
- Relationship?: ExcelRelationshipData[];
179
- };
180
- }
181
- ```
182
-
183
- | Field | Type | Description |
184
- |-------|------|-------------|
185
- | `Relationships.$` | `{ xmlns: string }` | 네임스페이스 |
186
- | `Relationships.Relationship` | `ExcelRelationshipData[] \| undefined` | 관계 항목 배열 |
187
-
188
- ### `ExcelRelationshipData`
189
-
190
- 개별 Relationship 엔트리 데이터이다.
191
-
192
- ```typescript
193
- export interface ExcelRelationshipData {
194
- $: {
195
- Id: string;
196
- Target: string;
197
- Type: string;
198
- };
199
- }
200
- ```
201
-
202
- | Field | Type | Description |
203
- |-------|------|-------------|
204
- | `$.Id` | `string` | 관계 ID (예: `"rId1"`) |
205
- | `$.Target` | `string` | 대상 파일 경로 |
206
- | `$.Type` | `string` | 관계 타입 URI |
207
-
208
- ### `ExcelXmlWorkbookData`
209
-
210
- `workbook.xml` 데이터 구조이다.
211
-
212
- ```typescript
213
- export interface ExcelXmlWorkbookData {
214
- workbook: {
215
- $: { "xmlns": string; "xmlns:r"?: string };
216
- bookViews?: [{ workbookView: [{}] }];
217
- sheets?: [{ sheet: { $: { "name": string; "sheetId": string; "r:id": string } }[] }];
218
- };
219
- }
220
- ```
221
-
222
- | Field | Type | Description |
223
- |-------|------|-------------|
224
- | `workbook.$` | `object` | 네임스페이스 |
225
- | `workbook.bookViews` | `Array \| undefined` | 워크북 뷰 설정 |
226
- | `workbook.sheets` | `Array \| undefined` | 시트 목록 |
227
- | `workbook.sheets[0].sheet[].$.name` | `string` | 시트 이름 |
228
- | `workbook.sheets[0].sheet[].$.sheetId` | `string` | 시트 ID |
229
- | `workbook.sheets[0].sheet[].$["r:id"]` | `string` | 관계 ID |
230
-
231
- ### `ExcelXmlWorksheetData`
232
-
233
- `worksheet*.xml` 데이터 구조이다.
234
-
235
- ```typescript
236
- export interface ExcelXmlWorksheetData {
237
- worksheet: {
238
- $: { "xmlns": string; "xmlns:r"?: string };
239
- dimension?: [{ $: { ref: string } }];
240
- sheetViews?: [{ sheetView: { $: { workbookViewId: string; zoomScale?: string }; pane?: [...] }[] }];
241
- sheetFormatPr?: [{ $: { defaultRowHeight: string } }];
242
- cols?: [{ col: { $: { min: string; max: string; width?: string; bestFit?: string; customWidth?: string } }[] }];
243
- sheetData: [{ row?: ExcelRowData[] }];
244
- mergeCells?: [{ $: { count: string }; mergeCell: { $: { ref: string } }[] }];
245
- drawing?: { $: { "r:id": string } }[];
246
- };
247
- }
248
- ```
249
-
250
- | Field | Type | Description |
251
- |-------|------|-------------|
252
- | `worksheet.dimension` | `Array \| undefined` | 데이터 범위 (예: `"A1:C10"`) |
253
- | `worksheet.sheetViews` | `Array \| undefined` | 시트 뷰 설정 (줌, 틀 고정) |
254
- | `worksheet.sheetFormatPr` | `Array \| undefined` | 기본 행 높이 |
255
- | `worksheet.cols` | `Array \| undefined` | 열 설정 (너비 등) |
256
- | `worksheet.sheetData` | `Array` | 행 데이터 |
257
- | `worksheet.mergeCells` | `Array \| undefined` | 병합 셀 정보 |
258
- | `worksheet.drawing` | `Array \| undefined` | 드로잉 관계 참조 |
259
-
260
- ### `ExcelRowData`
261
-
262
- 행 XML 데이터이다.
263
-
264
- ```typescript
265
- export interface ExcelRowData {
266
- $: { r: string };
267
- c?: ExcelCellData[];
268
- }
269
- ```
270
-
271
- | Field | Type | Description |
272
- |-------|------|-------------|
273
- | `$.r` | `string` | 행 주소 (1 기반, 예: `"1"`, `"10"`) |
274
- | `c` | `ExcelCellData[] \| undefined` | 셀 데이터 배열 |
275
-
276
- ### `ExcelCellData`
277
-
278
- 셀 XML 데이터이다.
279
-
280
- ```typescript
281
- export interface ExcelCellData {
282
- $: { r: string; s?: string; t?: ExcelCellType };
283
- v?: [string];
284
- f?: [string];
285
- is?: { t?: (string | { _?: string })[] }[];
286
- }
287
- ```
288
-
289
- | Field | Type | Description |
290
- |-------|------|-------------|
291
- | `$.r` | `string` | 셀 주소 (예: `"A1"`, `"B3"`) |
292
- | `$.s` | `string \| undefined` | 스타일 ID |
293
- | `$.t` | `ExcelCellType \| undefined` | 셀 타입 |
294
- | `v` | `[string] \| undefined` | 셀 값 |
295
- | `f` | `[string] \| undefined` | 수식 |
296
- | `is` | `Array \| undefined` | 인라인 문자열 데이터 |
297
-
298
- ### `ExcelXmlDrawingData`
299
-
300
- `drawing*.xml` 데이터 구조이다. 이미지 앵커 정보를 포함한다.
301
-
302
- ```typescript
303
- export interface ExcelXmlDrawingData {
304
- wsDr: {
305
- $: { "xmlns": string; "xmlns:a"?: string; "xmlns:r"?: string };
306
- twoCellAnchor?: {
307
- from?: { col: string[]; colOff?: string[]; row: string[]; rowOff?: string[] }[];
308
- to?: { col: string[]; colOff?: string[]; row: string[]; rowOff?: string[] }[];
309
- pic?: { nvPicPr?: {...}[]; blipFill?: {...}[]; spPr?: {...}[] }[];
310
- clientData?: unknown[];
311
- }[];
312
- };
313
- }
314
- ```
315
-
316
- | Field | Type | Description |
317
- |-------|------|-------------|
318
- | `wsDr.$` | `object` | 네임스페이스 |
319
- | `wsDr.twoCellAnchor` | `Array \| undefined` | 두 셀 사이에 앵커된 이미지 목록 |
320
- | `twoCellAnchor.from` | `Array \| undefined` | 시작 위치 (행/열/오프셋) |
321
- | `twoCellAnchor.to` | `Array \| undefined` | 끝 위치 (행/열/오프셋) |
322
- | `twoCellAnchor.pic` | `Array \| undefined` | 이미지 정보 (blip 관계 ID 포함) |
323
-
324
- ### `ExcelXmlSharedStringData`
325
-
326
- `sharedStrings.xml` 데이터 구조이다.
327
-
328
- ```typescript
329
- export interface ExcelXmlSharedStringData {
330
- sst: {
331
- $: { xmlns: string };
332
- si?: ExcelXmlSharedStringDataSi[];
333
- };
334
- }
335
- ```
336
-
337
- | Field | Type | Description |
338
- |-------|------|-------------|
339
- | `sst.$` | `{ xmlns: string }` | 네임스페이스 |
340
- | `sst.si` | `ExcelXmlSharedStringDataSi[] \| undefined` | 공유 문자열 항목 배열 |
341
-
342
- ### `ExcelXmlSharedStringDataSi`
343
-
344
- SharedString 개별 항목이다. discriminated union으로, `t` 키가 있으면 단순 텍스트, `r` 키가 있으면 서식 있는 텍스트(rich text)이다.
345
-
346
- ```typescript
347
- export type ExcelXmlSharedStringDataSi =
348
- | { t: ExcelXmlSharedStringDataText }
349
- | { r: { t: ExcelXmlSharedStringDataText }[] };
350
- ```
351
-
352
- | Variant | Discriminant | Description |
353
- |---------|-------------|-------------|
354
- | `{ t: ... }` | `t` 키 존재 | 단순 텍스트 |
355
- | `{ r: ... }` | `r` 키 존재 | 서식 있는 텍스트 (run 배열) |
356
-
357
- ### `ExcelXmlSharedStringDataText`
358
-
359
- SharedString 텍스트 데이터이다. 단순 문자열 또는 공백 보존 속성이 있는 객체이다.
360
-
361
- ```typescript
362
- export type ExcelXmlSharedStringDataText = [string | { $: { space?: "preserve" }; _?: string }];
363
- ```
364
-
365
- ### `ExcelXmlStyleData`
366
-
367
- `styles.xml` 데이터 구조이다.
368
-
369
- ```typescript
370
- export interface ExcelXmlStyleData {
371
- styleSheet: {
372
- $: { xmlns: string };
373
- numFmts?: [{ $: { count: string }; numFmt?: { $: { numFmtId: string; formatCode: string } }[] }];
374
- fonts: [{ $: { count: string }; font: {}[] }];
375
- fills: [{ $: { count: string }; fill: ExcelXmlStyleDataFill[] }];
376
- borders: [{ $: { count: string }; border: ExcelXmlStyleDataBorder[] }];
377
- cellXfs: [{ $: { count: string }; xf: ExcelXmlStyleDataXf[] }];
378
- };
379
- }
380
- ```
381
-
382
- | Field | Type | Description |
383
- |-------|------|-------------|
384
- | `styleSheet.numFmts` | `Array \| undefined` | 커스텀 숫자 형식 목록 |
385
- | `styleSheet.fonts` | `Array` | 폰트 목록 |
386
- | `styleSheet.fills` | `Array` | 채우기 스타일 목록 |
387
- | `styleSheet.borders` | `Array` | 테두리 스타일 목록 |
388
- | `styleSheet.cellXfs` | `Array` | 셀 서식(xf) 목록 |
389
-
390
- ### `ExcelXmlStyleDataXf`
391
-
392
- 셀 서식(xf) 데이터이다.
393
-
394
- ```typescript
395
- export interface ExcelXmlStyleDataXf {
396
- $: {
397
- numFmtId?: string;
398
- fontId?: string;
399
- fillId?: string;
400
- borderId?: string;
401
- xfId?: string;
402
- applyNumberFormat?: string;
403
- applyFont?: string;
404
- applyAlignment?: string;
405
- applyFill?: string;
406
- applyBorder?: string;
407
- };
408
- alignment?: [{ $: { horizontal?: "center" | "left" | "right"; vertical?: "center" | "top" | "bottom" } }];
409
- }
410
- ```
411
-
412
- | Field | Type | Description |
413
- |-------|------|-------------|
414
- | `$.numFmtId` | `string \| undefined` | 숫자 형식 ID |
415
- | `$.fontId` | `string \| undefined` | 폰트 ID |
416
- | `$.fillId` | `string \| undefined` | 채우기 ID |
417
- | `$.borderId` | `string \| undefined` | 테두리 ID |
418
- | `$.xfId` | `string \| undefined` | 부모 xf ID |
419
- | `$.applyNumberFormat` | `string \| undefined` | 숫자 형식 적용 여부 |
420
- | `$.applyFont` | `string \| undefined` | 폰트 적용 여부 |
421
- | `$.applyAlignment` | `string \| undefined` | 정렬 적용 여부 |
422
- | `$.applyFill` | `string \| undefined` | 채우기 적용 여부 |
423
- | `$.applyBorder` | `string \| undefined` | 테두리 적용 여부 |
424
- | `alignment` | `Array \| undefined` | 정렬 설정 (horizontal, vertical) |
425
-
426
- ### `ExcelXmlStyleDataFill`
427
-
428
- 채우기 스타일 데이터이다.
429
-
430
- ```typescript
431
- export interface ExcelXmlStyleDataFill {
432
- patternFill: [{ $: { patternType: "none" | "solid" | "gray125" }; fgColor?: [{ $: { rgb: string } }] }];
433
- }
434
- ```
435
-
436
- | Field | Type | Description |
437
- |-------|------|-------------|
438
- | `patternFill[0].$.patternType` | `"none" \| "solid" \| "gray125"` | 패턴 유형 |
439
- | `patternFill[0].fgColor` | `[{ $: { rgb: string } }] \| undefined` | 전경색 (ARGB) |
440
-
441
- ### `ExcelXmlStyleDataBorder`
442
-
443
- 테두리 스타일 데이터이다. 각 방향은 선택적이며, `style`과 `color`를 가진다.
444
-
445
- ```typescript
446
- export interface ExcelXmlStyleDataBorder {
447
- top?: [{ $: { style: "thin" | "medium" }; color?: [{ $: { rgb: string } }] }];
448
- left?: [{ $: { style: "thin" | "medium" }; color?: [{ $: { rgb: string } }] }];
449
- right?: [{ $: { style: "thin" | "medium" }; color?: [{ $: { rgb: string } }] }];
450
- bottom?: [{ $: { style: "thin" | "medium" }; color?: [{ $: { rgb: string } }] }];
451
- }
452
- ```
453
-
454
- | Field | Type | Description |
455
- |-------|------|-------------|
456
- | `top` | `Array \| undefined` | 상단 테두리 (`"thin"` 또는 `"medium"`) |
457
- | `left` | `Array \| undefined` | 좌측 테두리 |
458
- | `right` | `Array \| undefined` | 우측 테두리 |
459
- | `bottom` | `Array \| undefined` | 하단 테두리 |
@@ -1,194 +0,0 @@
1
- # Utilities
2
-
3
- ## `ExcelUtils`
4
-
5
- Excel 유틸리티 함수 모음. 셀 주소 변환, 날짜/숫자 변환, 숫자 형식 처리 정적 메서드를 제공한다.
6
-
7
- ```typescript
8
- export class ExcelUtils {
9
- // 주소 변환
10
- static stringifyAddr(point: ExcelAddressPoint): string;
11
- static stringifyRowAddr(r: number): string;
12
- static stringifyColAddr(c: number): string;
13
- static parseRowAddr(addr: string): number;
14
- static parseColAddr(addr: string): number;
15
- static parseCellAddr(addr: string): ExcelAddressPoint;
16
- static parseRangeAddr(rangeAddr: string): ExcelAddressRangePoint;
17
- static stringifyRangeAddr(point: ExcelAddressRangePoint): string;
18
-
19
- // 날짜/숫자 변환
20
- static convertTimeTickToNumber(tick: number): number;
21
- static convertNumberToTimeTick(value: number): number;
22
-
23
- // 숫자 형식 처리
24
- static convertNumFmtCodeToName(numFmtCode: string): ExcelNumberFormat;
25
- static convertNumFmtIdToName(numFmtId: number): ExcelNumberFormat;
26
- static convertNumFmtNameToId(numFmtName: ExcelNumberFormat): number;
27
- }
28
- ```
29
-
30
- ### 주소 변환 메서드
31
-
32
- #### `stringifyAddr(point)`
33
-
34
- 셀 좌표를 "A1" 형식 문자열로 변환한다.
35
-
36
- | Parameter | Type | Description |
37
- |-----------|------|-------------|
38
- | `point` | `ExcelAddressPoint` | 셀 좌표 (`{ r: number; c: number }`) |
39
-
40
- **반환값:** `string` - 예: `{ r: 0, c: 0 }` -> `"A1"`, `{ r: 2, c: 3 }` -> `"D3"`
41
-
42
- #### `stringifyRowAddr(r)`
43
-
44
- 행 인덱스(0 기반)를 행 주소 문자열로 변환한다.
45
-
46
- | Parameter | Type | Description |
47
- |-----------|------|-------------|
48
- | `r` | `number` | 행 인덱스 (0 기반) |
49
-
50
- **반환값:** `string` - 예: `0` -> `"1"`, `9` -> `"10"`
51
-
52
- #### `stringifyColAddr(c)`
53
-
54
- 열 인덱스(0 기반)를 열 주소 문자열로 변환한다. 열 인덱스는 0~16383 범위여야 한다.
55
-
56
- | Parameter | Type | Description |
57
- |-----------|------|-------------|
58
- | `c` | `number` | 열 인덱스 (0 기반) |
59
-
60
- **반환값:** `string` - 예: `0` -> `"A"`, `25` -> `"Z"`, `26` -> `"AA"`
61
-
62
- #### `parseRowAddr(addr)`
63
-
64
- 셀 주소에서 행 인덱스를 추출한다.
65
-
66
- | Parameter | Type | Description |
67
- |-----------|------|-------------|
68
- | `addr` | `string` | 셀 주소 (예: `"A3"`) |
69
-
70
- **반환값:** `number` - 0 기반 행 인덱스. 예: `"A3"` -> `2`
71
-
72
- #### `parseColAddr(addr)`
73
-
74
- 셀 주소에서 열 인덱스를 추출한다.
75
-
76
- | Parameter | Type | Description |
77
- |-----------|------|-------------|
78
- | `addr` | `string` | 셀 주소 (예: `"B3"`) |
79
-
80
- **반환값:** `number` - 0 기반 열 인덱스. 예: `"B3"` -> `1`
81
-
82
- #### `parseCellAddr(addr)`
83
-
84
- 셀 주소를 좌표로 변환한다.
85
-
86
- | Parameter | Type | Description |
87
- |-----------|------|-------------|
88
- | `addr` | `string` | 셀 주소 (예: `"B3"`) |
89
-
90
- **반환값:** `ExcelAddressPoint` - 예: `"B3"` -> `{ r: 2, c: 1 }`
91
-
92
- #### `parseRangeAddr(rangeAddr)`
93
-
94
- 범위 주소를 좌표로 변환한다.
95
-
96
- | Parameter | Type | Description |
97
- |-----------|------|-------------|
98
- | `rangeAddr` | `string` | 범위 주소 (예: `"A1:C3"`) |
99
-
100
- **반환값:** `ExcelAddressRangePoint` - 예: `"A1:C3"` -> `{ s: { r: 0, c: 0 }, e: { r: 2, c: 2 } }`
101
-
102
- #### `stringifyRangeAddr(point)`
103
-
104
- 범위 좌표를 주소 문자열로 변환한다. 시작과 끝이 같으면 단일 셀 주소를 반환한다.
105
-
106
- | Parameter | Type | Description |
107
- |-----------|------|-------------|
108
- | `point` | `ExcelAddressRangePoint` | 범위 좌표 |
109
-
110
- **반환값:** `string` - 예: `"A1:C3"` 또는 `"A1"` (단일 셀)
111
-
112
- ### 날짜/숫자 변환 메서드
113
-
114
- #### `convertTimeTickToNumber(tick)`
115
-
116
- JavaScript 타임스탬프(ms)를 Excel 날짜 숫자로 변환한다. Excel은 1900-01-01을 1로 계산한다 (1899-12-30이 날짜 0).
117
-
118
- | Parameter | Type | Description |
119
- |-----------|------|-------------|
120
- | `tick` | `number` | JavaScript 타임스탬프 (밀리초) |
121
-
122
- **반환값:** `number` - Excel 날짜 숫자
123
-
124
- #### `convertNumberToTimeTick(value)`
125
-
126
- Excel 날짜 숫자를 JavaScript 타임스탬프(ms)로 변환한다.
127
-
128
- | Parameter | Type | Description |
129
- |-----------|------|-------------|
130
- | `value` | `number` | Excel 날짜 숫자 |
131
-
132
- **반환값:** `number` - JavaScript 타임스탬프 (밀리초)
133
-
134
- ### 숫자 형식 처리 메서드
135
-
136
- #### `convertNumFmtCodeToName(numFmtCode)`
137
-
138
- 숫자 형식 코드를 형식 이름으로 변환한다.
139
-
140
- | Parameter | Type | Description |
141
- |-----------|------|-------------|
142
- | `numFmtCode` | `string` | 숫자 형식 코드 (예: `"General"`, `"yyyy-mm-dd"`) |
143
-
144
- **반환값:** `ExcelNumberFormat` - `"number"`, `"string"`, `"DateOnly"`, `"DateTime"`, `"Time"` 중 하나
145
-
146
- **변환 규칙:**
147
-
148
- | 형식 코드 패턴 | 반환값 |
149
- |----------------|--------|
150
- | `"General"` | `"number"` |
151
- | `yy`, `dd`, `mm`(날짜 문맥) 포함 + 시간 포함 | `"DateTime"` |
152
- | `yy`, `dd`, `mm`(날짜 문맥) 포함 | `"DateOnly"` |
153
- | `h`, `ss` 포함 | `"Time"` |
154
- | 숫자 패턴 (`0`, `#`, `.` 등) | `"number"` |
155
-
156
- #### `convertNumFmtIdToName(numFmtId)`
157
-
158
- Excel 내장 숫자 형식 ID를 형식 이름으로 변환한다.
159
-
160
- | Parameter | Type | Description |
161
- |-----------|------|-------------|
162
- | `numFmtId` | `number` | 숫자 형식 ID |
163
-
164
- **반환값:** `ExcelNumberFormat`
165
-
166
- **내장 형식 ID 범위:**
167
-
168
- | ID 범위 | 형식 |
169
- |---------|------|
170
- | 0~13, 37~40, 48 | `"number"` (숫자/일반/통화/퍼센트) |
171
- | 14~17, 27~31, 34~36, 50~58 | `"DateOnly"` (날짜, 로컬라이즈 포함) |
172
- | 22 | `"DateTime"` (날짜+시간) |
173
- | 18~21, 32~33, 45~47 | `"Time"` (시간) |
174
- | 49 | `"string"` (텍스트) |
175
-
176
- #### `convertNumFmtNameToId(numFmtName)`
177
-
178
- 숫자 형식 이름을 형식 ID로 변환한다.
179
-
180
- | Parameter | Type | Description |
181
- |-----------|------|-------------|
182
- | `numFmtName` | `ExcelNumberFormat` | 형식 이름 |
183
-
184
- **반환값:** `number`
185
-
186
- **매핑:**
187
-
188
- | 형식 이름 | ID |
189
- |-----------|-----|
190
- | `"number"` | 0 |
191
- | `"DateOnly"` | 14 |
192
- | `"DateTime"` | 22 |
193
- | `"Time"` | 18 |
194
- | `"string"` | 49 |